Function at 0x402c56
Capabilities:
Accept command line arguments

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3c
push ebx
push esi
push edi
mov edi, dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
xor ebx, ebx
push ebx
push ebx
or eax, 0xffffffff
push eax
push dword [0x42a510]
push ebx
push 0xfde9
call edi
mov esi, eax
push 2
mov ecx, esi
push 0xffffffffffffffff
add ecx, 1
pop eax
cmovo ecx, eax
push ecx
call fcn.00418644
pop ecx
pop ecx
push esi
push eax
mov dword [0x42a50c], eax
or eax, 0xffffffff
push eax
push dword [0x42a510]
push ebx
push 0xfde9
call edi
push 0x42a514
push dword [0x42a50c]
call dword [sym.imp.SHELL32.dll_CommandLineToArgvW]
mov dword [0x42a508], eax
mov eax, dword [0x42a514]
shl eax, 2
mov dword [ebp - 8], eax
mov dword [ebp - 0xc], ebx
call fcn.00401105
movsx edx, al
mov dword [ebp - 0x34], edx
call fcn.00401102
movsx ecx, al
mov dword [ebp - 0x2c], ecx
imul ecx, edx
call fcn.0040110e
movsx edx, al
imul ebx, ecx, 9
imul eax, ecx, 3
mov dword [ebp - 0x3c], edx
add ebx, edx
add eax, edx
mov dword [ebp - 0x10], ebx
mov dword [ebp - 0x18], eax
movsx eax, byte [0x4298f1]
xor edx, edx
movsx ecx, byte [0x4298f0]
add eax, ebx
div ecx
movsx ecx, byte [0x4298f3]
sub eax, ecx
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x427020]
movsd qword [ebp - 0x28], xmm0
xor eax, eax
je 0x402d3e
add byte [edi], cl
mov esi, 0x4298f205
add byte [ebx], dh
ror byte [ebx + 0xf66e85d], cl
outsb dx, byte [esi]
enter 0xffffffffffffbe0f, 5
hlt
movsx eax, byte [0x4298f2]
xor edx, edx
mov ebx, dword [ebp - 0x18]
movd xmm1, eax
movsx eax, byte [0x4298f4]
cvtdq2pd xmm1, xmm1
movd xmm0, eax
cvtdq2pd xmm0, xmm0
addsd xmm0, xmm0
subsd xmm1, xmm0
mulsd xmm1, qword [ebp - 0x28]
movsd qword [ebp - 0x28], xmm1
movsx eax, byte [0x4298f1]
movsx ecx, byte [0x4298f0]
add eax, ebx
div ecx
movsx ecx, byte [0x4298f3]
sub eax, ecx
je 0x402dcb
call fcn.00401108
movsx ecx, al
movsx eax, byte [0x42a530]
imul ecx, eax
add ecx, ecx
call fcn.00401111
movsx eax, al
sub ecx, eax
call fcn.0040110b
movsx eax, al
add ecx, eax
movsx eax, byte [0x4298f4]
add eax, ecx
je 0x402dcb
push 7
pop eax
mov dword [ebp - 0x14], eax
jmp 0x402e2e
movsx eax, byte [0x4298f1]
xor edx, edx
add eax, dword [ebp - 0x10]
movsx ecx, byte [0x4298f0]
div ecx
movsx ecx, byte [0x4298f3]
sub eax, ecx
je 0x402e2b
movsx eax, byte [0x4298f1]
xor edx, edx
movsx ecx, byte [0x4298f0]
add eax, ebx
div ecx
movsx ecx, byte [0x4298f3]
movsd xmm0, qword [ebp - 0x28]
sub eax, ecx
movd xmm1, eax
cvtdq2pd xmm1, xmm1
shr eax, 0x1f
addsd xmm1, qword [eax*8 + 0x427020]
mulsd xmm0, xmm1
cvttsd2si eax, xmm0
jmp 0x402dc6
mov eax, dword [ebp - 0x14]
mov ebx, dword [ebp - 0xc]
cmp ebx, eax
jge 0x402e80
xor ecx, ecx
mov edi, ecx
cmp dword [0x42a514], ecx
jle 0x402e74
mov esi, ecx
or ebx, 0xffffffff
mov eax, dword [0x42a508]
push ecx
push ecx
push ecx
push ecx
push ebx
push dword [esi + eax]
push ecx
push 0xfde9
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
add dword [ebp - 8], eax
lea esi, [esi + 4]
inc edi
push 0
pop ecx
cmp edi, dword [0x42a514]
jl 0x402e46
mov ebx, dword [ebp - 0xc]
inc ebx
mov dword [ebp - 0xc], ebx
mov ebx, dword [ebp - 0x10]
jmp 0x402d03
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov esi, dword [eax + 0x18]
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x1c], esi
mov ecx, dword [esi + 0x3c]
mov ecx, dword [ecx + esi + 0x78]
add ecx, esi
mov dword [ebp - 0x24], ecx
cmp ecx, esi
je 0x402f0d
mov ebx, dword [ecx + 0x18]
test ebx, ebx
je 0x402f0d
mov ecx, dword [ecx + 0x20]
lea ecx, [ecx + ebx*4]
add ecx, esi
sub ecx, 4
dec ebx
mov dword [ebp - 0x20], ecx
mov edi, dword [ecx]
mov ecx, 0x655ccb51
add edi, esi
mov dword [ebp - 0xc], ecx
mov cl, byte [edi]
inc edi
mov byte [ebp - 1], cl
test cl, cl
je 0x402f06
mov esi, dword [ebp - 0xc]
mov al, cl
movsx edx, al
sub al, 0x41
mov ecx, edx
or ecx, 0x20
cmp al, 0x19
mov al, byte [edi]
cmova ecx, edx
xor ecx, esi
imul esi, ecx, 0x1000193
inc edi
test al, al
jne 0x402ed6
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0xc], esi
cmp dword [ebp - 0xc], 0x695face9
mov esi, dword [ebp - 0x1c]
je 0x402f14
mov ecx, dword [ebp - 0x20]
test ebx, ebx
jne 0x402eb4
mov eax, dword [eax]
jmp 0x402e8c
mov edx, dword [ebp - 0x24]
mov eax, dword [edx + 0x24]
lea eax, [eax + ebx*2]
mov ebx, dword [ebp - 8]
movzx ecx, word [eax + esi]
mov eax, dword [edx + 0x1c]
push ebx
push 0
lea eax, [eax + ecx*4]
mov eax, dword [eax + esi]
add eax, esi
call eax
mov ecx, dword [0x42a514]
and dword [ebp - 0x14], 0
shl ecx, 2
mov dword [0x42a500], eax
sub ebx, ecx
add eax, ecx
mov dword [ebp - 8], ebx
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x2c]
imul eax, dword [ebp - 0x34]
imul eax, eax, 5
add ecx, eax
mov dword [ebp - 0x3c], ecx
movsx eax, byte [0x4298f1]
xor edx, edx
add eax, ecx
movsx ecx, byte [0x4298f0]
div ecx
movsx ecx, byte [0x4298f3]
sub eax, ecx
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x427020]
movsd qword [ebp - 0x38], xmm0
xor eax, eax
je 0x402f9d
add byte [edi], cl
mov esi, 0x4298f205
add byte [ebx], dh
ror byte [ebx + 0xf66e85d], cl
outsb dx, byte [esi]
enter 0xffffffffffffbe0f, 5
hlt
movsx eax, byte [0x4298f2]
xor edx, edx
mov ebx, dword [ebp - 0x18]
movd xmm1, eax
movsx eax, byte [0x4298f4]
cvtdq2pd xmm1, xmm1
movd xmm0, eax
cvtdq2pd xmm0, xmm0
addsd xmm0, xmm0
subsd xmm1, xmm0
mulsd xmm1, qword [ebp - 0x38]
movsd qword [ebp - 0x38], xmm1
movsx eax, byte [0x4298f1]
movsx ecx, byte [0x4298f0]
add eax, ebx
div ecx
movsx ecx, byte [0x4298f3]
sub eax, ecx
je 0x40302b
call fcn.00401108
movsx ecx, al
movsx eax, byte [0x42a530]
imul ecx, eax
add ecx, ecx
call fcn.00401111
movsx eax, al
sub ecx, eax
call fcn.0040110b
movsx eax, al
add ecx, eax
movsx eax, byte [0x4298f4]
add eax, ecx
je 0x40302b
mov dword [ebp - 0x1c], 7
jmp 0x40308c
movsx eax, byte [0x4298f1]
xor edx, edx
add eax, dword [ebp - 0x10]
movsx ecx, byte [0x4298f0]
div ecx
movsx ecx, byte [0x4298f3]
sub eax, ecx
je 0x40308c
movsx eax, byte [0x4298f1]
xor edx, edx
movsx ecx, byte [0x4298f0]
add eax, ebx
div ecx
movsx ecx, byte [0x4298f3]
movsd xmm0, qword [ebp - 0x38]
sub eax, ecx
movd xmm1, eax
cvtdq2pd xmm1, xmm1
shr eax, 0x1f
addsd xmm1, qword [eax*8 + 0x427020]
mulsd xmm0, xmm1
cvttsd2si eax, xmm0
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x14]
cmp eax, dword [ebp - 0x1c]
jge 0x4030fe
xor ebx, ebx
cmp dword [0x42a514], ebx
jle 0x4030f2
mov ecx, dword [ebp - 8]
xor esi, esi
mov edx, dword [ebp - 0xc]
xor edi, edi
push 0
push 0
push ecx
push edx
or eax, 0xffffffff
push eax
mov eax, dword [0x42a508]
push dword [esi + eax]
push 0
push 0xfde9
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov ecx, dword [0x42a500]
lea esi, [esi + 4]
mov edx, dword [ebp - 0xc]
mov dword [edi + ecx], edx
add edx, eax
mov ecx, dword [ebp - 8]
lea edi, [edi + 4]
sub ecx, eax
mov dword [ebp - 0xc], edx
inc ebx
mov dword [ebp - 8], ecx
cmp ebx, dword [0x42a514]
jl 0x4030a8
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x3c]
inc eax
mov dword [ebp - 0x14], eax
jmp 0x402f62
pop edi
pop esi
mov dword [0x42a504], 1
pop ebx
leave
ret