Function at 0x4012f6
Capabilities:
Accept command line arguments

Disassembly:
call fcn.004044f2
cmp eax, 3
jb 0x401388
mov edi, 0x40135e
push 8
pop ecx
mov esi, dword [esp + 8]
repe cmpsw word [esi], word es:[edi]
lea edi, [edi + ecx*2]
jne 0x401331
push dword [esp + 0xc]
call fcn.00404a7a
call fcn.004056f9
pop eax
pop ecx
dec eax
pop ecx
dec eax
push eax
cmp eax, 3
jb 0x401388
push 7
pop ecx
mov esi, dword [esp + 8]
repe cmpsw word [esi], word es:[edi]
lea edi, [edi + ecx*2]
jne 0x401349
pop eax
pop ecx
dec eax
push eax
jmp 0x402a44
push 6
pop ecx
mov esi, dword [esp + 8]
repe cmpsw word [esi], word es:[edi]
jne 0x401388
pop eax
pop ecx
dec eax
push eax
jmp 0x403440
push ebp
mov ebp, esp
or ecx, 0xffffffff
xor edx, edx
push ecx
push ecx
push ecx
push edx
push edx
push edx
push edx
push edx
push edx
push edx
push edx
push edx
push edx
mov esi, 0x40d040
push esi
dec eax
jle 0x4013e5
xchg ebx, eax
lea edx, [ebp + 0xc]
sub ebx, 2
jb 0x4013c8
mov edi, dword [edx]
call 0x40161f
test edi, edi
je 0x401617
mov dword [edx], edi
add edx, 8
sub ebx, 2
jae 0x4013af
inc ebx
jne 0x4013e5
mov ecx, 0x200
mov edi, esi
mov esi, dword [edx]
xor eax, eax
dec ecx
je 0x401617
lodsw ax, word [esi]
stosw word es:[edi], ax
test eax, eax
jne 0x4013d6
push ebp
mov ebp, esp
call fcn.00401702
outsd dx, dword [esi]
jne 0x401464
add byte [ebp - 0x69], bl
mov esi, 0x401b46
test edi, edi
je 0x40140c
push 1
pop edx
mov ebx, edx
call fcn.00401683
je 0x401617
movzx eax, word [esi - 2]
add esi, eax
mov dword [ebp - 0x1c], esi
push ebp
mov ebp, esp
push 2
call fcn.00401708
popal
insb byte es:[edi], dx
jo 0x40148b
popal
add al, ch
iretd
add bl, byte [ebx]
ror byte [ebx], 0xc7
je 0x401617
mov dword [ebp - 0x24], ebx
mov dword [ebp - 0xc], edi
mov esi, 0x401eb4
test edi, edi
je 0x4014a5
push ebx
shr ebx, 1
push 0xb
pop edx
inc ebx
inc ebx
call fcn.00401683
pop ebx
je 0x401617
mov eax, dword [esi - 4]
cmp ebx, 2
sbb edx, edx
or dx, word [eax + esi - 2]
je 0x401617
mov dword [ebp - 0x28], esi
pop esi
xor eax, eax
cmp word [esi], ax
jne 0x401518
xor ecx, ecx
sub esp, 0x40
mov al, byte [ecx + 0x401eab]
mov word [esp + ecx*2], ax
inc ecx
test eax, eax
jne 0x4014b5
mov ecx, 0x200
mov edx, esp
cmp ebx, 2
jb 0x4014da
push ecx
push esi
push edx
call fcn.00404789
jmp 0x40150d
push eax
push eax
push eax
push eax
push eax
push 0x8180c
push edx
push eax
push eax
push eax
push ecx
push esi
push eax
push eax
push eax
push 0x401e81
push eax
push eax
push 0x4c
push esp
call fcn.00404917
inc edi
je 0x40154f
jo 0x401567
outsb dx, byte [esi]
inc esi
imul ebp, dword [ebp + 0x4e], 0x57656d61
add byte [ebp - 0x3f7a339b], cl
lea esp, [ebp - 0x34]
test eax, eax
je 0x401617
cmp ebx, 2
jae 0x40152e
push 0x3e
push esi
call fcn.004044c0
jb 0x401617
mov dword [ebp - 4], eax
push ebp
mov ebp, esp
push 1
call fcn.00401708
jo 0x4015ac
outsd dx, dword [esi]
jb 0x4015a3
jae 0x4015b3
add byte [ebp + 0x680a74c0], al
stosd dword es:[edi], eax
push ds
inc eax
add al, ch
mov cl, 0xfa
invalid
test eax, eax
je 0x40154f
push 0x401eab
call section.CODE
push 0
call fcn.00401708
bound esi, qword gs:[ebp + 0x67]
add byte [ebp - 9], bl
add byte [di - 9], bl
fadd dword [eax - 0x74ff22ab]
jge 0x40155a
mov esi, dword [ebp - 0x28]
jne 0x401541
test edi, edi
je 0x40158b
inc byte [ebp - 0x22]
cmp byte [ebp - 0x24], 2
jb 0x4015bb
push esi
add esi, dword [esi - 4]
mov dword [ebp - 0x28], esi
mov esi, 0x401eca
mov ebx, dword [ebp - 0x24]
and ebx, 1
push ebx
jmp 0x4015c5
lea ecx, [ebp - 0x20]
push 4
push ecx
push dword [ebp - 4]
call fcn.00404429
jb 0x4015f9
xor eax, eax
lodsb al, byte [esi]
add esi, eax
test eax, eax
je 0x4015f9
push ebp
lodsd eax, dword [esi]
and eax, dword [ebp - 0x20]
cmp eax, dword [esi]
lea esi, [esi + 8]
jne 0x40159b
or byte [ebp - 0x14], dh
push 0
push 0
push dword [ebp - 4]
call fcn.0040446f
push esi
add esi, dword [esi - 4]
mov dword [ebp - 0x28], esi
push dword [ebp - 4]
xor eax, eax
or dword [ebp - 0xc], 0xffffffff
mov dword [ebp - 0x34], 0x3a40000
mov dword [0x40e340], eax
mov dword [0x40d940], eax
call esi
lea esp, [ebp - 0x38]
call fcn.00408df9
pop esi
cmp byte [ebp - 0x22], 0
jne 0x4015f9
cmp dword [ebp - 0x14], 0
jne 0x4015f9
cmp dword [ebp - 0x10], 0
je 0x40159b
call fcn.0040110b
mov eax, dword [ebp - 8]
inc eax
je 0x40160f
mov edx, dword [ebp - 0x1c]
movsx ecx, word [edx - 4]
add ecx, edx
call ecx
push dword [ebp - 4]
call fcn.004044ed
leave
push 0
call sub.KERNEL32.DLL_ExitProcess
cmp word [edi], 0x2d
jne 0x401651
movzx eax, word [edi + 2]
cmp eax, 0x2d
je 0x401650
dec eax
cmp eax, 0x7f
jae 0x401651
inc eax
cmp word [edi + 4], 0
jne 0x401651
push 3
pop ecx
mov edi, 0x401654
repne scasb al, byte es:[edi]
jne 0x401651
add edi, ecx
movsx ecx, word [edi + ecx*2]
add edi, ecx
ret
xor edi, edi
ret
enter 0x18, 0
cmp eax, 4
jb 0x402b19
mov esi, 0x402f21
xor eax, eax
jmp 0x402a62
lodsb al, byte [esi]
test al, al
jne 0x402a5a
add esi, 5
mov edi, dword [ebp + 0xc]
cmp byte [esi], al
je 0x402b19
lodsb al, byte [esi]
scasw ax, word es:[edi]
jne 0x402a5a
test al, al
jne 0x402a6d
mov dword [ebp - 8], esi
push 0x4000
call fcn.0040462b
jb 0x402b19
mov dword [ebp - 4], eax
xor eax, eax
lea edx, [ebp - 0xc]
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x10], edx
mov dword [edx], eax
push dword [ebp + 0x10]
push 0x402b21
call fcn.00404671
mov ecx, dword [ebp - 0x14]
shl ecx, 2
add ecx, 0x14
push ecx
push dword [ebp - 4]
call fcn.004045ac
jb 0x402b82
xchg edi, eax
mov eax, dword [ebp - 4]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
mov dword [ebp - 0x10], edi
stosd dword es:[edi], eax
mov eax, dword [ebp - 0xc]
stosd dword es:[edi], eax
mov esi, dword [ebp - 8]
lodsb al, byte [esi]
push eax
push dword [ebp - 0x10]
call fcn.00402b8e
jb 0x402b11
lodsd eax, dword [esi]
add esi, eax
push 0x23
push dword [ebp + 0x14]
call fcn.004044c0
jb 0x402b11
mov dword [ebp - 0x18], eax
mov eax, dword [ebp + 4]
lea edx, [ebp + 0x18]
sub eax, 4
push eax
push edx
push dword [ebp - 0x10]
push dword [ebp - 0x18]
call esi
add esp, 0x10
call fcn.00408df9
push dword [ebp - 0x18]
call fcn.004044ed
push dword [ebp - 4]
call fcn.0040465e
leave
push 0
call sub.KERNEL32.DLL_ExitProcess
cmp dword [esp + 4], 0
je 0x402b86
mov esi, dword [esp + 8]
mov ebx, dword [esp + 0x14]
sub ebx, esi
lea eax, [ebx + 0x34]
shr ebx, 1
push eax
push dword [ebp - 4]
call fcn.004045ac
jb 0x402b82
mov edi, dword [esp + 0xc]
mov edx, dword [esp + 0x10]
sub edx, edi
shr edx, 1
mov dword [eax], edx
add eax, 4
mov edx, dword [ebp - 0x10]
mov dword [ebp - 0x10], eax
mov dword [edx], eax
inc dword [ebp - 0x14]
xchg edi, eax
xchg edx, eax
xor eax, eax
sub edx, esi
lea ecx, [eax + 9]
shr edx, 1
stosd dword es:[edi], eax
lea eax, [edi + edx*2 + 0x2c]
stosd dword es:[edi], eax
lea eax, [ebx - 1]
sub eax, edx
stosd dword es:[edi], eax
mov eax, dword [esp + 4]
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov ecx, ebx
rep movsw word es:[edi], word [esi]
xor eax, eax
inc eax
ret
mov eax, dword [ebp - 0x10]
inc dword [eax - 2]
jmp 0x402b82
pop ebx
pop edx
pop edx
sub ebx, 2
jb 0x40346f
mov esi, 0x403476
xor eax, eax
jmp 0x403459
lodsb al, byte [esi]
test al, al
jne 0x403451
add esi, 4
mov edi, edx
cmp byte [esi], al
je 0x40346f
lodsb al, byte [esi]
scasw ax, word es:[edi]
jne 0x403451
test al, al
jne 0x40345f
lodsd eax, dword [esi]
add esi, eax
push ebx
xchg ebx, eax
call esi
push 0
call sub.KERNEL32.DLL_ExitProcess
pop di
jb 0x4034ef
add byte [edx + 0xa], bh
add byte [eax], al
add byte [edx + 0x58], bl
push edx
push ebx
enter 0x14, 0
push 0x36
push eax
call fcn.004044c0
jb 0x4034c4
mov edx, esp
push eax
push 0x12
push edx
push eax
call fcn.00404429
sbb ebx, ebx
call fcn.004044ed
inc ebx
je 0x4034c6
pop eax
movzx ebx, al
movzx ecx, ah
shr eax, 0x10
dec ecx
and al, 0xf7
dec ecx
dec eax
movzx eax, al
sub eax, 3
and eax, ecx
js 0x4034c6
xor ebx, ebx
xchg ebx, eax
leave
pop ebx
ret
add al, 0
add byte [ecx + 0x6589fc75], cl
clc
call fcn.004036ed
dec esi
mov ecx, dword [ebp - 4]
add eax, 0x12
sub ecx, esi
cmp word [esi], 0x4d42
je 0x403776
cmp ecx, eax
jb 0x40366b
mov eax, dword [esi]
mov dword [ebp - 0xc], eax
shr eax, 8
and ah, 0xf7
movzx ecx, byte [esi + 0x10]
cmp ecx, 8
mov cl, 1
je 0x403531
mov cl, 4
mov dword [ebp - 0x10], ecx
je 0x403550
movzx edx, word [esi + 0x10]
sub edx, 0x18
mov cl, dl
mov byte [ebp - 0xc], dl
not cl
and dh, cl
and dl, cl
sub ah, 2
or eax, dword [esi + 4]
jmp 0x403588
movzx eax, ax
movzx ebx, byte [esi + 7]
movzx ecx, word [esi + 3]
movzx edx, word [esi + 5]
sub ah, 3
je 0x40357b
sub ebx, 0x18
add edx, ecx
mov byte [ebp - 0xc], bl
and ebx, 0xfffffff7
rol al, 1
dec edx
add ah, al
mov cl, ch
and al, 0xfd
shr edx, 8
or eax, ecx
or eax, edx
movzx edx, word [esi + 0x10]
or eax, ebx
sub edx, 8
and dh, 0xdf
or eax, edx
jne 0x40366b
movzx eax, word [esi + 0xc]
movzx ebx, word [esi + 0xe]
call fcn.00403718
xor edx, edx
test byte [esi + 0x11], 0x20
jne 0x4035b0
lea edx, [ebx - 1]
imul edx, ecx
neg ecx
add edx, dword [ebp - 0x14]
add edx, edi
imul ebx, eax
mov dword [edi + 8], edx
mov dword [edi + 0xc], ecx
movsx eax, word [esi + 8]
movsx edx, word [esi + 0xa]
mov dword [edi + 0x10], eax
mov dword [edi + 0x14], edx
movzx ecx, byte [esi]
movzx eax, word [esi + 3]
movzx edx, word [esi + 5]
mov dword [edi + 0x1c], ecx
push edi
add edi, 0x20
add esi, 0x12
rep movsb byte es:[edi], byte [esi]
pop edi
xchg ecx, eax
add edi, 0x120
cmp dword [ebp - 0x10], 4
je 0x403612
test edx, edx
je 0x40360d
push edx
add dl, cl
xor eax, eax
rep stosd dword es:[edi], eax
pop ecx
call fcn.004036f7
dec ecx
jne 0x4035fd
sub cl, dl
xor eax, eax
rep stosd dword es:[edi], eax
jmp 0x403612
call fcn.00403863
mov al, byte [ebp - 0xa]
mov ecx, ebx
test al, 8
je 0x403630
test ebx, ebx
je 0x403677
call fcn.004036ed
mov ecx, eax
and ecx, 0x7f
inc ecx
sub ebx, ecx
jae 0x403632
add ecx, ebx
xor ebx, ebx
cmp dword [ebp - 0x10], 4
jne 0x403653
test al, al
js 0x403646
call fcn.004036f7
dec ecx
jne 0x40363c
jmp 0x40361b
call fcn.004036f7
dec ecx
mov eax, dword [edi - 4]
rep stosd dword es:[edi], eax
jmp 0x40361b
test al, al
js 0x403662
call fcn.004036ed
stosb byte es:[edi], al
dec ecx
jne 0x403657
jmp 0x40361b
call fcn.004036ed
rep stosb byte es:[edi], al
jmp 0x40361b
push dword [ebp - 0x1c]
call fcn.0040440e
and dword [ebp - 0x1c], 0
push dword [ebp + 0x18]
call fcn.004044ed
mov esi, dword [ebp - 0x1c]
mov ecx, dword [ebp + 0x14]
test esi, esi
je 0x4036be
mov edx, dword [esi + 0x18]
dec ecx
js 0x4036be
test edx, edx
jne 0x4036a6
dec ecx
js 0x40369f
jne 0x4036be
call fcn.004038b8
jmp 0x4036b8
call fcn.00403906
jmp 0x4036b8
dec ecx
js 0x4036be
jne 0x4036b3
push esi
call fcn.0040397e
jmp 0x4036be
call fcn.004038ed
push esi
call fcn.0040440e
mov eax, dword [ebp - 0x1c]
cmp eax, 1
leave
pop edi
pop esi
pop ebx
ret 8
cmp ecx, 0x36
jb 0x40366b
movzx eax, word [esi + 0x1a]
mov edx, dword [esi + 0xa]
mov ecx, dword [esi + 0xe]
dec eax
sub ecx, 0x28
or eax, dword [esi + 0x1e]
sub edx, 0x36
or eax, ecx
jne 0x40366b
mov eax, dword [esi + 0x1c]
ror eax, 3
mov dword [ebp - 0xc], eax
mov ecx, eax
dec eax
je 0x4037ab
mov cl, 4
mov dword [ebp - 0x10], ecx
je 0x4037b6
dec eax
dec eax
shr eax, 1
jmp 0x4037b9
sub dh, 4
or eax, edx
jne 0x40366b
mov eax, dword [esi + 0x12]
mov ebx, dword [esi + 0x16]
call fcn.00403718
lea edx, [ebx - 1]
imul edx, ecx
neg ecx
add edx, dword [ebp - 0x14]
add edx, edi
mov dword [ebp - 0x14], eax
xor eax, eax
mov dword [edi + 8], edx
mov dword [edi + 0xc], ecx
mov dword [edi + 0x10], eax
mov dword [edi + 0x14], eax
add edi, 0x120
add esi, 0x36
cmp dword [ebp - 0x10], 4
je 0x403808
xor ecx, ecx
call fcn.004036f7
mov byte [edi - 1], 0xff
inc cl
jne 0x4037fb
mov eax, dword [ebp - 0xc]
sub eax, 3
jb 0x40383d
mov dword [ebp - 0xc], eax
dec eax
and eax, 3
mov dword [ebp - 0x18], eax
mov ecx, dword [ebp - 0x14]
call fcn.004036f7
dec ecx
jne 0x40381d
mov ecx, dword [ebp - 0x14]
and ecx, dword [ebp - 0x18]
je 0x403835
call fcn.004036ed
dec ecx
jne 0x40382d
dec ebx
jne 0x40381a
jmp 0x403677
mov ecx, dword [ebp - 0x14]
call fcn.004036ed
stosb byte es:[edi], al
dec ecx
jne 0x403840
mov ecx, dword [ebp - 0x14]
neg ecx
and ecx, 3
je 0x40385b
call fcn.004036ed
dec ecx
jne 0x403853
dec ebx
jne 0x40383d
jmp 0x403677