Function at 0x10012517
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x10057803
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x1a0
cmp byte [ebp + 0x10], 0
push ebx
push esi
push edi
mov byte [esp + 0x54], cl
je 0x10012dd1
test cl, cl
je 0x1001256f
mov byte [esp + 0x23], 0
cmp byte [esp + 0x23], 0
je 0x10013044
push ecx
mov dl, 1
mov ecx, 0x1be
call fcn.1001245d
jmp 0x10013043
xor ebx, ebx
mov dword [esp + 0x1c], 0xe80c6548
mov dword [esp + 0x18], ebx
jmp 0x1001258f
mov eax, dword [esp + 0x18]
mov dword [esp + eax*4 + 0x28], 0x22124f84
inc dword [esp + 0x18]
cmp dword [esp + 0x18], 1
jl 0x1001257f
push ecx
lea eax, [esp + 0x43]
mov byte [esp + 0x43], bl
push eax
call fcn.10014c02
pop ecx
pop ecx
cmp dword [esp + 0x28], ebx
je 0x100125bc
cmp dword [esp + 0x28], 0x847d
je 0x100125bc
xor ecx, ecx
inc ecx
jmp 0x100125be
mov ecx, ebx
xor eax, eax
mov dword [esp + 0x8c], ebx
cmp ecx, 1
mov dword [esp + 0x90], ebx
mov dword [esp + 0x94], ebx
setl al
mov dword [esp + 0x28], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x1b4], ebx
mov eax, 0x847dfa86
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], eax
mov dword [esp + 0x18], 0xf0b96ca2
push 2
mov dword [esp + 0x20], 1
mov dword [esp + 0x1c], ebx
pop esi
jmp 0x10012628
mov eax, dword [esp + 0x18]
mov dword [esp + eax*4 + 0x4c], 0xfffffffd
inc dword [esp + 0x18]
cmp dword [esp + 0x18], esi
jl 0x10012618
mov dword [esp + 0x18], 3
cmp dword [esp + 0x18], ebx
jl 0x100127d1
mov dword [esp + 0x14], 7
mov dword [esp + 0x2c], 0xffffffff
mov dword [esp + 0x14], ebx
jmp 0x10012669
mov eax, dword [esp + 0x14]
mov dword [esp + eax*4 + 0xc0], 0xfffffffc
inc dword [esp + 0x14]
cmp dword [esp + 0x14], esi
jl 0x10012656
mov dword [esp + 0x14], ebx
jmp 0x100126f1
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x10], ebx
jmp 0x10012692
mov eax, dword [esp + 0x10]
mov dword [esp + eax*4 + 0xe0], 0xb3bfa32a
inc dword [esp + 0x10]
cmp dword [esp + 0x10], 4
jl 0x1001267f
mov eax, dword [esp + 0x18]
xor ecx, ecx
mov eax, dword [esp + eax*4 + 0x70]
cmp eax, 0x4163
sete cl
mov dword [esp + 0xec], ecx
test ecx, ecx
je 0x100126c5
mov eax, dword [esp + 0x18]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0xec]
mov eax, dword [esp + 0x18]
mov eax, dword [esp + eax*4 + 0x70]
mov eax, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov eax, dword [esp + eax*4 + 0x70]
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x70]
mov eax, dword [esp + 0x14]
mov dword [esp + eax*4 + 0x70], ecx
mov dword [esp + 0x1c], ecx
inc dword [esp + 0x14]
cmp dword [esp + 0x14], 3
jle 0x10012675
mov dword [esp + 0x14], 1
cmp dword [esp + 0x14], ebx
jl 0x100127c7
mov dword [esp + 0x10], 0xfffffffb
mov dword [esp + 0x1c], 0xbe1552b9
mov eax, dword [esp + 0x14]
inc eax
jne 0x10012729
mov eax, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
xor ecx, ecx
mov edx, dword [esp + eax*4 + 0x4c]
mov eax, dword [esp + 0x14]
cmp eax, 0x44ed25e4
setle cl
cmp ecx, edx
jl 0x10012747
mov eax, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
xor edx, edx
mov ecx, dword [esp + eax*4 + 0x4c]
mov eax, dword [esp + 0x10]
cmp eax, ecx
setg dl
mov dword [esp + 0x10], edx
cmp dword [esp + 0x14], ebx
jne 0x10012768
mov eax, dword [esp + 0x78]
mov eax, dword [esp + 0x50]
mov eax, dword [esp + 0x2c]
mov eax, dword [esp + 0x14]
imul ecx, dword [esp + eax*4 + 0x4c], 0x5604
mov eax, dword [esp + 0x14]
cmp ecx, dword [esp + eax*4 + 0x4c]
jl 0x1001278a
mov eax, dword [esp + 0x4c]
mov eax, dword [esp + 0x14]
xor edx, edx
mov ecx, dword [esp + eax*4 + 0x4c]
mov eax, dword [esp + 0x70]
cmp ecx, eax
setne dl
add edx, 0x418d0dca
mov dword [esp + 0xc4], edx
cmp dword [esp + 0x10], 0xcf62392e
sbb eax, eax
neg eax
mov dword [esp + 0xc4], eax
dec dword [esp + 0x14]
jns 0x1001270e
dec dword [esp + 0x18]
jns 0x10012640
lea eax, [esp + 0x33]
mov byte [esp + 0x33], bl
push eax
push 0x2ef
push ebx
push ebx
push 0x7f67
push 0x4d4a
mov edx, 0x4f84
mov cl, 1
call fcn.10012517
mov edi, dword [ebp + 0x18]
xor dl, dl
push 0x4d00
push 0x36af
mov ecx, 0xe0e
mov eax, dword [edi + 0x10]
mov dword [esp + 0x44], eax
lea eax, [esp + 0xc4]
push eax
mov dword [esp + 0xc8], 0x4e064826
call fcn.1001514c
add esp, 0x1c
call fcn.10014a8c
cmp dword [edi + 0x14], 8
pop ecx
pop ecx
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x10]
mov dword [esp + 0x9c], eax
jb 0x1001284b
mov eax, dword [edi]
jmp 0x1001284d
mov eax, edi
push dword [edi + 0x10]
push ebx
push eax
call fcn.1001644e
mov esi, ebx
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], esi
cmp esi, dword [esp + 0x9c]
jae 0x10012db0
mov dword [esp + 0x18], ebx
xor ecx, ecx
mov dword [esp + 0x2c], 0xbefcdf11
inc ecx
mov dword [esp + 0x14], 0xe856dfc9
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x10], ebx
jmp 0x1001289b
mov eax, dword [esp + 0x10]
mov dword [esp + eax*4 + 0x48], ecx
inc dword [esp + 0x10]
cmp dword [esp + 0x10], ecx
jl 0x1001288f
mov dword [esp + 0x18], ebx
cmp dword [esp + 0x18], ebx
jg 0x100129a1
jmp 0x100128b4
xor ecx, ecx
inc ecx
mov dword [esp + 0x10], ebx
jmp 0x100128cd
mov eax, dword [esp + 0x10]
mov dword [esp + eax*4 + 0x80], 0x398070ad
inc dword [esp + 0x10]
cmp dword [esp + 0x10], 3
jl 0x100128ba
mov dword [esp + 0x88], ebx
jmp 0x100128f3
mov eax, dword [esp + 0x88]
mov dword [esp + eax*4 + 0x48], 0xffffffff
inc dword [esp + 0x88]
cmp dword [esp + 0x88], ecx
jl 0x100128dd
mov dword [esp + 0x10], 0x1b77
cmp dword [esp + 0x10], 0x1f57
jle 0x10012957
mov esi, ebx
mov edi, ebx
mov eax, edi
lea ecx, [esp + 0x158]
or eax, esi
cdq
push edx
push eax
call fcn.10002407
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x1001292f
mov eax, dword [eax]
push eax
call fcn.10039f03
pop ecx
push ebx
push 1
lea ecx, [esp + 0x160]
call fcn.1000eba1
inc edi
cmp edi, 0x6731
jl 0x10012912
inc esi
cmp esi, 0x41eb
jl 0x10012910
mov byte [esp + 0x23], bl
cmp byte [esp + 0x23], 0
je 0x10012974
push 0x160c
xor dl, dl
mov ecx, 0xf9a
call fcn.1001313e
pop ecx
cmp dword [esp + 0x10], 0x1b42
jge 0x10012989
push str.jrdd_psr_rftj_tknhzko_nwdpo_izpcdnqw_ssyxw
call fcn.10039f03
pop ecx
mov dword [esp + 0x1b4], ebx
inc dword [esp + 0x18]
cmp dword [esp + 0x18], ebx
jle 0x100128b1
mov edi, dword [ebp + 0x18]
cmp dword [esp + 0x48], ebx
jne 0x100129e5
mov eax, dword [esp + 0x48]
xor ecx, ecx
cmp eax, 0xffffffff
setl cl
xor edx, edx
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x18]
cmp ecx, eax
setle dl
neg edx
mov dword [esp + 0x14], edx
mov eax, dword [esp + 0x14]
cmp eax, dword [esp + 0x18]
jg 0x100129da
mov eax, dword [esp + 0x2c]
cmp dword [esp + 0x48], 1
jg 0x100129e5
mov eax, dword [esp + 0x14]
mov eax, dword [esp + 0x1c]
xor edx, edx
mov eax, dword [esp + 0x14]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x18]
cmp eax, ecx
mov eax, dword [esp + 0x34]
setle dl
mov dword [esp + 0x18], edx
cmp eax, 0xffffffff
je 0x10012a75
cmp eax, dword [esp + 0x38]
je 0x10012a40
push dword [ebp + 8]
lea eax, [esp + 0x3c]
mov edx, 0x3b71
push eax
push 0x6cc8
lea eax, [esp + 0x40]
xor cl, cl
push eax
lea eax, [esp + 0x9c]
push eax
call fcn.1001479e
mov eax, dword [esp + 0x48]
add esp, 0x14
mov esi, dword [esp + 0x24]
add esi, eax
cmp dword [edi + 0x14], 8
mov dword [esp + 0x38], esi
jb 0x10012a54
mov eax, dword [edi]
jmp 0x10012a56
mov eax, edi
push dword [edi + 0x10]
mov ecx, dword [ebp + 8]
push esi
push eax
call fcn.1001644e
mov dword [esp + 0x34], eax
cmp esi, 0xffffffff
jne 0x10012861
jmp 0x10012db0
push 0xfffffffffffffff8
pop esi
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], ebx
jmp 0x10012a95
mov eax, dword [esp + 0x10]
mov dword [esp + eax*4 + 0xc8], 0x313dd33a
inc dword [esp + 0x10]
cmp dword [esp + 0x10], 3
jl 0x10012a82
push 2
mov dword [esp + 0x18], ebx
pop edi
jmp 0x10012af3
mov dword [esp + 0x10], 0x888adae8
mov eax, dword [esp + 0x14]
cmp dword [esp + eax*4 + 0xc8], ebx
jne 0x10012af9
mov dword [esp + 0x10], ebx
jmp 0x10012ae9
mov dword [esp + 0x18], 0xa20bd035
mov dword [esp + 0x18], ebx
jmp 0x10012adf
mov eax, dword [esp + 0x18]
cmp dword [esp + eax*4 + 0xc8], ebx
jne 0x10012ae5
inc dword [esp + 0x18]
cmp dword [esp + 0x18], edi
jle 0x10012ace
inc dword [esp + 0x10]
cmp dword [esp + 0x10], edi
jle 0x10012ac0
inc dword [esp + 0x14]
cmp dword [esp + 0x14], edi
jle 0x10012aa5
mov ecx, dword [ebp + 8]
lea eax, [esp + 0x134]
push 0xffffffffffffffff
push dword [esp + 0x3c]
push eax
call fcn.10015d42
push eax
lea ecx, [esp + 0x90]
mov byte [esp + 0x1b8], 3
call fcn.10015df5
push ebx
push 1
lea ecx, [esp + 0x13c]
mov byte [esp + 0x1bc], bl
call fcn.1000ed75
mov dword [esp + 0x18], esi
mov dword [esp + 0x14], 0x5466bc65
mov dword [esp + 0x24], ebx
mov dword [esp + 0x24], edi
mov dword [esp + 0x24], 0x61ea52fa
mov dword [esp + 0x10], ebx
jmp 0x10012b6f
mov eax, dword [esp + 0x10]
mov dword [esp + eax*4 + 0x14c], 8
inc dword [esp + 0x10]
cmp dword [esp + 0x10], 3
jl 0x10012b5c
mov dword [esp + 0x18], ebx
cmp dword [esp + 0x18], 0xfffffff7
jge 0x10012db0
push 4
pop esi
mov dword [esp + 0x40], 3
mov dword [esp + 0x44], 0x3d3b
mov dword [esp + 0x24], 1
mov dword [esp + 0x24], 0x1f7ee045
mov dword [esp + 0x24], 0xd68e480b
mov dword [esp + 0x98], 0x42a2
mov dword [esp + 0x10], ebx
jmp 0x10012bd0
mov eax, dword [esp + 0x10]
mov dword [esp + eax*4 + 0x170], ebx
inc dword [esp + 0x10]
cmp dword [esp + 0x10], esi
jl 0x10012bc1
mov eax, dword [esp + 0x40]
xor edx, edx
mov eax, dword [esp + 0x40]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
mov eax, dword [esp + 0x40]
mov eax, dword [esp + 0x40]
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x18]
cmp ecx, eax
setg dl
cmp edx, 0xffffffff
jle 0x10012c11
cmp dword [esp + 0x14], ebx
je 0x10012c11
xor edx, edx
inc edx
jmp 0x10012c13
mov edx, ebx
mov eax, dword [esp + 0x18]
xor ecx, ecx
sub edx, eax
mov eax, dword [esp + 0x18]
cmp eax, edx
push 9
setge cl
imul ecx, dword [esp + 0x44]
pop eax
sub eax, ecx
je 0x10012d30
mov dword [esp + 0x1c], 0x7c76
mov dword [esp + 0x10], ebx
jmp 0x10012c55
mov eax, dword [esp + 0x10]
mov dword [esp + eax*4 + 0xd4], 0x3c8d3fd9
inc dword [esp + 0x10]
cmp dword [esp + 0x10], edi
jl 0x10012c42
mov dword [esp + 0x14], ebx
jmp 0x10012d23
mov dword [esp + 0x2c], 0xc35cf455
mov dword [esp + 0x24], 0x657a772b
mov dword [esp + 0x10], ebx
jmp 0x10012c8d
mov eax, dword [esp + 0x10]
mov dword [esp + eax*4 + 0xf0], 0x7dcc3592
inc dword [esp + 0x10]
cmp dword [esp + 0x10], esi
jl 0x10012c7a
cmp dword [esp + 0x44], ebx
je 0x10012ca4
cmp dword [esp + 0x1c], ebx
je 0x10012ca4
xor ecx, ecx
inc ecx
jmp 0x10012ca6
mov ecx, ebx
xor eax, eax
cmp ecx, 1
setge al
cmp eax, dword [esp + 0x1c]
je 0x10012cbf
cmp dword [esp + 0x44], ebx
je 0x10012cbf
xor ecx, ecx
inc ecx
jmp 0x10012cc1
mov ecx, ebx
xor eax, eax
test ecx, ecx
setne al
add eax, dword [esp + 0x14]
jne 0x10012cd8
cmp dword [esp + 0x14], ebx
jne 0x10012cd8
mov eax, ebx
jmp 0x10012cdb
xor eax, eax
inc eax
xor edx, edx
cmp eax, 0x1c1d
mov eax, dword [esp + 0xf8]
setl dl
xor ecx, ecx
imul edx, eax
mov eax, dword [esp + 0x18]
cmp edx, eax
setge cl
mov dword [esp + 0x2c], ecx
cmp dword [esp + 0x2c], ebx
je 0x10012d12
cmp dword [esp + 0xf8], ebx
je 0x10012d12
xor eax, eax
inc eax
jmp 0x10012d14
mov eax, ebx
mov dword [esp + 0x24], eax
mov dword [esp + 0xd4], ebx
inc dword [esp + 0x14]
cmp dword [esp + 0x14], 3
je 0x10012c64
jmp 0x10012da1
mov dword [esp + 0xa0], 0xf33d48a2
mov dword [esp + 0x24], 0x194e4064
mov dword [esp + 0x14], ebx
jmp 0x10012d5c
mov eax, dword [esp + 0x14]
mov dword [esp + eax*4 + 0xdc], 0x2db60270
inc dword [esp + 0x14]
cmp dword [esp + 0x14], 1
jl 0x10012d49
mov dword [esp + 0x14], ebx
jmp 0x10012d78
mov eax, dword [esp + 0x14]
mov dword [esp + eax*4 + 0x128], ebx
inc dword [esp + 0x14]
cmp dword [esp + 0x14], 3
jl 0x10012d69
push ebx
push ecx
lea eax, [esp + 0xa8]
push eax
lea eax, [esp + 0xa4]
push eax
lea edx, [esp + 0x50]
lea ecx, [esp + 0x54]
call fcn.10012417
add esp, 0x10
dec dword [esp + 0x18]
cmp dword [esp + 0x18], 0xfffffff7
jl 0x10012b88
mov ecx, dword [ebp + 0xc]
lea eax, [esp + 0x8c]
push eax
call fcn.10015e65
lea ecx, [esp + 0x8c]
call fcn.100165d9
jmp 0x10013044
cmp byte [ebp + 0x14], 0
je 0x10012de2
mov dword [edx], 0xfffffffb
jmp 0x10013044
mov dword [esp + 0x24], 0x14d1
cmp dword [esp + 0x24], 0x129d
jge 0x1001302a
call fcn.1003bb74
push eax
push 0x10060f74
push str.in.txt
call fcn.1003bfbd
add esp, 0xc
call fcn.1003bb74
add eax, 0x20
push eax
push 0x10060f80
push str.out.txt
call fcn.1003bfbd
add esp, 0xc
xor ebx, ebx
mov dword [esp + 0x68], ebx
mov byte [esp + 0x58], bl
push 0xf
pop eax
mov dword [esp + 0x6c], eax
mov dword [esp + 0x1b4], 4
mov dword [esp + 0xbc], eax
mov dword [esp + 0xb8], ebx
mov byte [esp + 0xa8], bl
mov byte [esp + 0x1b4], 5
jmp 0x10012fe6
lea edx, [esp + 0xa8]
mov ecx, esi
call fcn.10016d43
mov esi, dword [esp + 0x68]
mov eax, ebx
test esi, esi
je 0x10012e8d
mov dword [esp + eax*4 + 0x100], eax
inc eax
cmp eax, esi
jb 0x10012e81
lea ecx, [esi - 1]
mov dword [esp + 0x34], ecx
test ecx, ecx
je 0x10012f43
xor eax, eax
lea edi, [esp + 0x100]
inc eax
mov dword [esp + 0x38], eax
mov edx, eax
cmp eax, esi
jae 0x10012f2e
cmp dword [esp + 0x6c], 0x10
lea eax, [esp + 0x58]
mov esi, dword [edi]
lea ecx, [esp + 0x58]
cmovae eax, dword [esp + 0x58]
cmovae ecx, dword [esp + 0x58]
mov ebx, dword [esp + edx*4 + 0x100]
mov dword [esp + 0x28], esi
mov al, byte [eax + esi]
cmp al, byte [ebx + ecx]
jle 0x10012eeb
mov eax, ebx
mov dword [edi], eax
mov eax, esi
mov dword [esp + edx*4 + 0x100], eax
jmp 0x10012f1d
cmp dword [esp + 0x6c], 0x10
lea eax, [esp + 0x58]
lea ecx, [esp + 0x58]
cmovae eax, dword [esp + 0x58]
cmovae ecx, dword [esp + 0x58]
mov al, byte [eax + esi]
cmp al, byte [ebx + ecx]
jne 0x10012f1d
mov ecx, dword [esp + 0x28]
mov eax, ebx
cmp ecx, eax
jle 0x10012f1d
mov dword [edi], eax
mov dword [esp + edx*4 + 0x100], ecx
mov esi, dword [esp + 0x68]
inc edx
cmp edx, esi
jb 0x10012eb0
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x34]
inc eax
add edi, 4
dec ecx
mov dword [esp + 0x38], eax
mov dword [esp + 0x34], ecx
jne 0x10012eaa
xor ebx, ebx
mov ecx, ebx
test esi, esi
je 0x10012f5c
mov eax, dword [esp + ecx*4 + 0x100]
mov dword [esp + eax*4 + 0x180], ecx
inc ecx
cmp ecx, esi
jb 0x10012f49
mov edi, dword [esp + 0xb8]
xor edx, edx
mov eax, edi
mov dword [esp + 0x28], ebx
div esi
mov ecx, ebx
test eax, eax
je 0x10012fdb
mov dword [esp + 0x1c], ebx
test esi, esi
je 0x10012fcc
mov ebx, dword [esp + 0x28]
cmp dword [esp + 0xbc], 0x10
lea ecx, [esp + 0xa8]
mov eax, edi
mov edi, dword [esp + 0x1c]
cmovae ecx, dword [esp + 0xa8]
xor edx, edx
div esi
imul eax, dword [esp + edi*4 + 0x180]
add eax, ebx
mov dl, byte [eax + ecx]
call fcn.10016a75
mov esi, dword [esp + 0x68]
inc edi
mov dword [esp + 0x1c], edi
cmp edi, esi
mov edi, dword [esp + 0xb8]
jb 0x10012f7f
mov ecx, dword [esp + 0x28]
xor ebx, ebx
xor edx, edx
mov eax, edi
div esi
inc ecx
mov dword [esp + 0x28], ecx
cmp ecx, eax
jb 0x10012f73
push 0x10070b88
call fcn.10016c3e
pop ecx
mov esi, 0x10070ca8
lea edx, [esp + 0x58]
mov ecx, esi
call fcn.10016d43
lea ecx, [esp + 0x58]
call fcn.10016a1d
test al, al
je 0x10012e69
push ebx
push 1
lea ecx, [esp + 0xb0]
call fcn.1000eba1
or dword [esp + 0x1b4], 0xffffffff
lea ecx, [esp + 0x58]
push ebx
push 1
call fcn.1000eba1
mov eax, dword [ebp + 0x1c]
cmp byte [eax], 0
je 0x10013044
push 0x56b5
mov edx, 0x6510
xor cl, cl
call fcn.10013199
pop ecx
mov ecx, dword [esp + 0x1ac]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret