int main(int argc, char **argv) { push ebp mov ebp,esp sub esp,0x8 and esp,0xfffffff0 sub esp,0x10 void *p = malloc(16); mov DWORD PTR [esp],0x10 call 80482a8 ((char *)p)[16] = 0; mov BYTE PTR [eax+16],0x0 leave ret } mov DWORD PTR [esp],0x10 call 80482a8 mov BYTE PTR [eax+16],0x0 int main(int argc, char **argv) { size_t size = 15; mov [ebp-12],0xf int count = 0; mov [ebp-8],0x0 if (0 == argc) cmp [ebp+8],0x0 jne next_if count++; lea eax,[ebp-8] add [eax],0x1 next_if: if (0 ! = argc) cmp [ebp+8],0x0 je post_branches count--; lea eax,[ebp-8] sub [eax],0x1 post_branches: void *p = malloc(size + count); mov eax, [ebp-8] add eax, [ebp-12] mov [esp],eax call mov [ebp-4],eax ((char *)p)[size] = 0; mov edx, [ebp-4] mov eax, [ebp-12] lea eax,[edx+eax] mov BYTE PTR [eax],0x0 } mov [ebp-12],0xf mov [ebp-8],0x0 cmp [ebp+8],0x0 jne next_if lea eax,[ebp-8] add [eax],0x1 next_if: cmp [ebp+8],0x0 je post_branches lea eax,[ebp-8] sub [eax],0x1 post_branches: mov eax, [ebp-8] add eax, [ebp-12] mov [esp],eax call mov [ebp-4],eax mov edx, [ebp-4] mov eax, [ebp-12] lea eax,[edx+eax] mov BYTE PTR [eax],0x0