Function at 0x401caa
Capabilities:
Accept command line arguments
Allocate or change rwx memory

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x250
mov eax, 0x57d
xor eax, dword [ebp - 0x128]
xor eax, edx
cmp eax, 0xee9
jbe 0x401cfd
xor edx, edx
sbb dword [ebp - 0xc4], edx
sbb dword [ebp - 0x178], edx
xor edx, dword [ebp - 0x1dc]
adc edx, dword [ebp - 0xa0]
sub eax, 0xe5
test edx, edx
jbe 0x401cfd
add eax, dword [ebp - 0x230]
xor eax, dword [ebp - 0x6c]
sub eax, edx
sub eax, 0xa49
sub edx, dword [ebp - 0x130]
call fcn.00402f96
mov eax, dword [ebp - 0x198]
sbb eax, dword [ebp - 0x1d4]
add eax, edx
adc dword [ebp - 0xa8], eax
add dword [ebp - 0x148], 0x4955
sub eax, 0x23e0
cmp dword [ebp - 0x230], eax
jb 0x401d4f
xor edx, edx
sub dword [ebp - 0xd8], edx
sbb dword [ebp - 0x54], edx
sub edx, eax
or edx, dword [ebp - 0x154]
cmp eax, 0xaac
jae 0x401d4f
xor edx, eax
call dword [sym.imp.kernel32.dll_GetCurrentProcessId]
mov dword [ebp - 0x1a4], eax
xor eax, eax
and ecx, dword [ebp - 0x138]
add ecx, dword [ebp - 0xb0]
and dword [ebp - 0x208], 0x4c3e
xor dword [ebp - 0x194], eax
add dword [ebp - 0x14c], eax
and eax, dword [ebp - 0x18c]
or eax, ecx
add ecx, dword [ebp - 0x240]
and dword [ebp - 0x19c], 0x75d
cmp eax, 0
jne 0x401ddd
mov ecx, dword [ebp - 0x1ec]
xor dword [ebp - 0x1cc], 0x4e3a
and dword [ebp - 0x64], ecx
sub ecx, 0x5b71
add ecx, eax
sub ecx, dword [ebp - 0x19c]
sub eax, ecx
add dword [ebp - 0x170], 0x7b4c
sub dword [ebp - 0x178], ecx
sub dword [ebp - 0x158], ecx
add eax, 0xd67
xor eax, 0xf68
call fcn.004017d7
sub eax, eax
xor dword [ebp - 0xa8], ecx
xor eax, dword [ebp - 0xa8]
add eax, dword [ebp - 0x98]
sub eax, ecx
inc dword [ebp - 0x21c]
and ecx, eax
cmp eax, dword [ebp - 0x190]
jbe 0x401e42
sub ecx, dword [ebp - 0x1b4]
and ecx, dword [ebp - 0xe8]
sub ecx, ecx
inc dword [ebp - 0x180]
or ecx, 0x51f
sub ecx, dword [ebp - 0x144]
or ecx, dword [ebp - 0xe4]
xor eax, 0x55b
xor dword [ebp - 0x170], eax
add ecx, eax
call dword [sym.imp.kernel32.dll_GetLastError]
mov dword [ebp - 0x110], eax
xor ecx, ecx
dec ecx
add ecx, 0x913
cmp ecx, 0
jb 0x401e89
mov eax, 1
and eax, 0x51b1
xor eax, dword [ebp - 0x84]
sbb eax, dword [ebp - 0xf4]
add eax, 0x8b5
or eax, ecx
or eax, 0x7faf
cmp ecx, dword [ebp - 0x108]
jbe 0x401e89
inc eax
xor eax, 0xf28
call fcn.00402f96
sub ecx, ecx
sub ecx, dword [ebp - 0xa8]
and ecx, 0x54cf
or dword [ebp - 0x210], 0x510e
xor dword [ebp - 0x194], ecx
dec ecx
and ecx, edx
cmp dword [ebp - 0x114], ecx
jne 0x401efd
sub edx, edx
adc dword [ebp - 0x170], edx
mov dword [ebp - 0x164], edx
and dword [ebp - 0x1dc], 0x2e6
xor dword [ebp - 0xc4], 0x14bc
and edx, ecx
and edx, 0x508
inc edx
cmp ecx, dword [ebp - 0x134]
jbe 0x401f09
xor edx, 0xe6a
xor edx, ecx
sub edx, ecx
or edx, ecx
adc ecx, dword [ebp - 0x19c]
or ecx, dword [ebp - 0x168]
add ecx, edx
call dword [sym.imp.kernel32.dll_GetCurrentThreadId]
mov dword [ebp - 0x1dc], eax
push 0x700
call dword [sym.imp.msvcrt.dll_malloc]
sub edx, edx
or edx, dword [ebp - 0x200]
adc dword [ebp - 0x1bc], edx
adc dword [ebp - 0x204], edx
sub edx, ecx
or edx, 0x5cd
cmp edx, dword [ebp - 0x124]
jbe 0x401f8b
and dword [ebp - 0x168], 0x45
xor edx, ecx
mov ecx, dword [ebp - 0x140]
sub dword [ebp - 0x240], 0x1fd9
xor dword [ebp - 0x60], 0x156
and ecx, edx
xor ecx, dword [ebp - 0xa8]
sub ecx, dword [ebp - 0x138]
xor edx, ecx
inc dword [ebp - 0x124]
dec dword [ebp - 0x84]
xor edx, dword [ebp - 0x60]
xor edx, dword [ebp - 0x1bc]
add dword [ebp - 0x108], ecx
sbb dword [ebp - 0x1a0], ecx
sbb dword [ebp - 0x210], ecx
call fcn.004016ae
mov ecx, 0x69
adc ecx, dword [ebp - 0x168]
dec dword [ebp - 0x54]
cmp ecx, 0x8e
ja 0x401fe7
sub edx, edx
add dword [ebp - 0x58], 0xd59
xor edx, ecx
sub edx, ecx
xor edx, dword [ebp - 0x70]
or edx, dword [ebp - 0x1c0]
add ecx, edx
and ecx, edx
or ecx, edx
sub dword [ebp - 0x58], 0x958
sub edx, dword [ebp - 0x1c8]
and edx, dword [ebp - 0x238]
xor edx, dword [ebp - 0x16c]
adc edx, dword [ebp - 0x220]
inc dword [ebp - 0x80]
push dword [ebp - 0xac]
call dword [sym.imp.msvcrt.dll_sqrt]
call dword [sym.imp.kernel32.dll_GetCurrentProcessId]
mov dword [ebp - 0x1a8], eax
call fcn.00402f96
xor eax, eax
xor eax, dword [ebp - 0x54]
sub eax, 0x4d5
add eax, ecx
dec dword [ebp - 0x198]
dec dword [ebp - 0x54]
adc ecx, dword [ebp - 0x19c]
and ecx, dword [ebp - 0x144]
cmp dword [ebp - 0xe4], eax
jbe 0x402087
or dword [ebp - 0x178], 0x55d1
and ecx, eax
mov ecx, 0xdc4
and dword [ebp - 0x1f0], ecx
adc dword [ebp - 0x144], ecx
add dword [ebp - 0x1a0], ecx
or ecx, eax
xor ecx, dword [ebp - 0xe8]
or eax, ecx
xor eax, 0xfe
and eax, ecx
and eax, 0xd3a
xor ecx, dword [ebp - 0xa0]
add ecx, dword [ebp - 0x160]
xor eax, dword [ebp - 0x114]
push 0x200
push 3
call dword [sym.imp.msvcrt.dll_calloc]
call dword [sym.imp.kernel32.dll_GetCurrentProcessId]
mov dword [ebp - 0xfc], eax
call fcn.004016ae
sub ecx, ecx
sub edx, 0x30f5
xor edx, ecx
sbb ecx, dword [ebp - 0x1ec]
add ecx, dword [ebp - 0x21c]
or ecx, 0x3c01
sub ecx, 0x1e7
xor dword [ebp - 0x234], ecx
inc dword [ebp - 0x16c]
xor ecx, 0xcb0
cmp ecx, 0x308
jb 0x402125
mov edx, 0xf8a
and dword [ebp - 0x224], edx
add dword [ebp - 0x7c], 0x67bf
or edx, dword [ebp - 0x20c]
dec ecx
xor ecx, 0x3bfe
and dword [ebp - 0x210], edx
or dword [ebp - 0x8c], 0x326
xor dword [ebp - 0xe4], edx
sbb dword [ebp - 0x22c], edx
sub ecx, dword [ebp - 0x6c]
xor ecx, dword [ebp - 0x104]
push dword [ebp - 0x1d0]
push dword [ebp - 0x1f4]
push 0x1000
push 0
call dword [sym.imp.kernel32.dll_VirtualAlloc]
push 0x200
call dword [sym.imp.msvcrt.dll_malloc]
mov dword [ebp - 0x188], eax
mov edx, 0x45b
adc eax, dword [ebp - 0x70]
or dword [ebp - 0x244], edx
sub edx, 0x3567
sbb edx, dword [ebp - 0x148]
test edx, edx
je 0x4021ba
and edx, 0x4229
add edx, 0xbb7
sub dword [ebp - 0x22c], eax
xor eax, eax
dec dword [ebp - 0xb0]
sbb dword [ebp - 0x1bc], eax
xor eax, 0x903
or edx, eax
xor edx, 0xe72
and dword [ebp - 0x244], 0xc38
adc dword [ebp - 0xd0], edx
sub eax, dword [ebp - 0x13c]
add dword [ebp - 0xe0], edx
and dword [ebp - 0x240], edx
xor dword [ebp - 0xe0], edx
sub dword [ebp - 0x1d8], 0xb53
call fcn.00402f96
mov edx, 0x39b
or dword [ebp - 0x244], ecx
add edx, ecx
sub edx, ecx
add dword [ebp - 0xd0], 0x6dac
and ecx, 0x6686
or ecx, 0x23d0
cmp edx, 0x5e
jb 0x402228
xor ecx, ecx
dec dword [ebp - 0x19c]
sub ecx, 0xcbd
xor ecx, edx
and ecx, dword [ebp - 0x158]
inc edx
or edx, 0x2da
sub edx, dword [ebp - 0xe4]
add dword [ebp - 0x234], ecx
and dword [ebp - 0x128], 0x371
xor dword [ebp - 0xcc], edx
call dword [sym.imp.kernel32.dll_GetOEMCP]
push dword [ebp - 0x14c]
call dword [sym.imp.msvcrt.dll_sqrt]
call fcn.00401231
sub ecx, ecx
sub ecx, dword [ebp - 0xa8]
and ecx, edx
or ecx, edx
dec ecx
dec ecx
dec ecx
test ecx, ecx
je 0x4022a1
add ecx, edx
inc ecx
mov edx, dword [ebp - 0xf4]
sub edx, 0x346
and edx, dword [ebp - 0xec]
and ecx, 0x688
adc dword [ebp - 0xec], ecx
sbb dword [ebp - 0x120], ecx
and dword [ebp - 0x198], 0x66ef
and ecx, 0x48d
xor ecx, edx
sbb edx, dword [ebp - 0x134]
adc edx, dword [ebp - 0x10c]
call dword [sym.imp.kernel32.dll_GetACP]
sub edx, edx
xor edx, dword [ebp - 0xd0]
add edx, 0x166
and edx, 0x7a54
inc edx
add dword [ebp - 0x60], 0x91b
cmp dword [ebp - 0x200], edx
ja 0x402307
sub eax, eax
dec dword [ebp - 0xa4]
sbb dword [ebp - 0x230], eax
and eax, 0x4c4f
or eax, edx
xor eax, 0x6b0e
cmp dword [ebp - 0xdc], edx
jne 0x402309
add edx, 0x523
and edx, 0x520
and eax, edx
call fcn.004016ae
mov edx, dword [ebp - 0x154]
xor edx, dword [ebp - 0x108]
sub edx, dword [ebp - 0x150]
add edx, ecx
sub edx, ecx
cmp edx, 0x47
jbe 0x402353
mov ecx, 0x574
dec dword [ebp - 0x68]
or dword [ebp - 0x12c], 0xe82
adc ecx, dword [ebp - 0xbc]
or ecx, dword [ebp - 0xf4]
cmp ecx, 0xa0c
jbe 0x402353
sub edx, ecx
or edx, ecx
add ecx, dword [ebp - 0x134]
call dword [sym.imp.kernel32.dll_GetACP]
mov dword [ebp - 0xb4], eax
push dword [ebp - 0x218]
push dword [ebp - 0x130]
push 0x900
push 0
call dword [sym.imp.kernel32.dll_VirtualAlloc]
mov dword [ebp - 0xc0], eax
mov eax, 0xc1
add dword [ebp - 0x8c], 0x54e2
dec dword [ebp - 0x54]
and eax, dword [ebp - 0x120]
adc eax, dword [ebp - 0x110]
or eax, 0x5413
dec dword [ebp - 0xac]
and dword [ebp - 0x148], ecx
dec dword [ebp - 0x1b0]
cmp dword [ebp - 0xe0], eax
jne 0x4023df
sub ecx, ecx
add ecx, 0x7215
or ecx, 0x44a
dec eax
xor eax, ecx
sbb ecx, dword [ebp - 0x134]
add ecx, dword [ebp - 0x14c]
or eax, 0x47b
or dword [ebp - 0x114], 0x5e4
sbb dword [ebp - 0x1d0], eax
call fcn.00402f96
xor eax, eax
sub dword [ebp - 0x1a8], eax
mov dword [ebp - 0x198], eax
cmp eax, 0
jbe 0x402439
xor ecx, ecx
xor dword [ebp - 0x1a8], ecx
add ecx, 0x610e
add ecx, 0x9c3
or eax, ecx
cmp eax, dword [ebp - 0x144]
jne 0x402439
add ecx, dword [ebp - 0xd8]
add eax, 0x2a94
sub eax, ecx
or dword [ebp - 0x1a4], 0x737b
push dword [ebp - 0x184]
push dword [ebp - 0x1e0]
push 0x900
push 0
push 0xffffffffffffffff
call dword [sym.imp.kernel32.dll_VirtualAllocEx]
mov dword [ebp - 0x170], eax
mov eax, dword [ebp - 0x134]
inc eax
xor eax, 0x3c75
add dword [ebp - 0x21c], eax
adc dword [ebp - 0xe4], eax
xor eax, 0xa87
cmp eax, 0
je 0x40249f
xor edx, edx
dec edx
add edx, eax
or edx, eax
cmp dword [ebp - 0x1f8], eax
jae 0x40249f
and eax, 0x748
and eax, edx
sub edx, dword [ebp - 0x1bc]
call fcn.00402f96
sub eax, eax
sbb dword [ebp - 0x64], eax
add dword [ebp - 0xd4], eax
xor eax, dword [ebp - 0x1c4]
xor eax, dword [ebp - 0x54]
and eax, edx
sub eax, edx
or edx, 0x4468
test eax, eax
jb 0x40250b
sub edx, 0xb1c
sub edx, eax
mov edx, 0xbf
inc dword [ebp - 0xb8]
sub dword [ebp - 0x8c], 0x535a
sub dword [ebp - 0x214], edx
add edx, dword [ebp - 0x180]
sub dword [ebp - 0x134], eax
and edx, 0x21a6
sub edx, dword [ebp - 0xe8]
add edx, eax
sub edx, eax
or edx, dword [ebp - 0x1dc]
call dword [sym.imp.kernel32.dll_GetACP]
mov dword [ebp - 0x110], eax
call dword [sym.imp.kernel32.dll_GetCommandLineA]
call fcn.00402f96
mov edx, 0xba
sub edx, 0x3dbe
sub edx, ecx
xor dword [ebp - 0x8c], 0x53d
dec dword [ebp - 0xe0]
xor edx, ecx
sub edx, ecx
cmp dword [ebp - 0x84], edx
jne 0x402580
mov ecx, 0xbd4
add dword [ebp - 0xb0], ecx
xor dword [ebp - 0x5c], 0x258b
sbb ecx, dword [ebp - 0x204]
sub ecx, dword [ebp - 0x5c]
cmp edx, 0x3c7
jb 0x402580
sub dword [ebp - 0x214], edx
sub ecx, dword [ebp - 0x1b0]
call dword [sym.imp.kernel32.dll_GetCurrentProcess]
mov dword [ebp - 0x164], eax
push 0x40
push 0x1000
push 0x16000
push 0
call dword [sym.imp.kernel32.dll_VirtualAlloc]
mov dword [ebp - 0x38], eax
call dword [sym.imp.kernel32.dll_GetCurrentThread]
mov dword [ebp - 0x8c], eax
mov edx, 0x26
dec dword [ebp - 0xb0]
or edx, eax
or edx, 0x1ed
xor edx, eax
cmp edx, 0
ja 0x40261c
inc dword [ebp - 0x64]
mov eax, 0xdd
mov dword [ebp - 0x220], eax
sub dword [ebp - 0x10c], eax
or eax, edx
or eax, edx
xor edx, 0x29c
or dword [ebp - 0x21c], 0x1f68
sub dword [ebp - 0x214], edx
add dword [ebp - 0x20c], edx
xor dword [ebp - 0x1c0], edx
dec dword [ebp - 0x198]
xor dword [ebp - 0xe4], edx
or dword [ebp - 0x178], 0x985
push 0xe4b
push 0x4110a4
mov ecx, dword [ebp - 0x38]
push ecx
call dword [sym.imp.msvcrt.dll_memmove]
call dword [sym.imp.msvcrt.dll_clock]
xor eax, eax
adc eax, dword [ebp - 0xc4]
dec eax
or dword [ebp - 0xd4], 0xdc1
dec eax
cmp eax, dword [ebp - 0x19c]
jae 0x402680
mov ecx, dword [ebp - 0x204]
or dword [ebp - 0x16c], 0x542
sub dword [ebp - 0x170], ecx
sub ecx, eax
sub ecx, dword [ebp - 0x1e8]
test ecx, ecx
jae 0x402686
adc ecx, dword [ebp - 0x178]
sub dword [ebp - 0x1a0], eax
sub dword [ebp - 0xe0], eax
mov dword [ebp - 0x94], eax
mov edx, dword [ebp - 0x38]
mov ecx, 0x1000
mov esi, 0x4db438ea
xor eax, eax
add eax, dword [ebp - 0x218]
and eax, 0x108c
and eax, 0xc03
and eax, dword [ebp - 0x238]
and eax, dword [ebp - 0x13c]
mov dword [ebp - 0x208], eax
add dword [ebp - 0x244], 0x21d
or dword [ebp - 0x100], eax
and dword [ebp - 0x230], 0xd4b
and eax, edi
or eax, edi
inc eax
cmp eax, 0
jbe 0x402713
xor edi, edi
sub dword [ebp - 0xe0], 0x4eb4
add edi, 0xafc
sub edi, 0xaf5
and edi, dword [ebp - 0x1ac]
cmp eax, dword [ebp - 0x1bc]
jb 0x402713
sub edi, eax
xor edi, eax
add edi, 0xd47
or edi, eax
and edi, eax
xor edi, 0xfed
mov eax, dword [edx]
add eax, esi
mov dword [edx], eax
add edx, 4
loop 0x40271d
mov eax, 0x3d
and eax, dword [ebp - 0x140]
xor eax, dword [ebp - 0xbc]
sub eax, ecx
xor ecx, eax
add dword [ebp - 0x1b8], eax
sub eax, 0x40d
dec eax
xor eax, 0x3ffc
cmp eax, dword [ebp - 0x228]
jbe 0x402772
xor ecx, ecx
sub ecx, eax
adc ecx, dword [ebp - 0x90]
cmp ecx, 0x83b
jb 0x402772
add ecx, 0x5f1
or ecx, eax
adc ecx, dword [ebp - 0xdc]
mov esi, dword [ebp - 0x38]
mov eax, 0xd39
add eax, dword [ebp - 0x248]
sub eax, edi
xor eax, edi
inc dword [ebp - 0x80]
mov dword [ebp - 0xd0], eax
xor eax, 0xd34
test eax, eax
jae 0x4027d9
xor edi, edi
sub dword [ebp - 0x194], edi
or dword [ebp - 0x210], edi
and edi, dword [ebp - 0x58]
inc dword [ebp - 0xb4]
and dword [ebp - 0x14c], 0x1098
add dword [ebp - 0xec], 0xabe
cmp edi, 0x1c8
jne 0x4027d9
adc edi, dword [ebp - 0x1a8]
dec edi
and edi, eax
jmp dword [ebp - 0x38]