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

Disassembly:
push edi
push esi
push ebp
push ebx
sub esp, 0x54
mov ebp, dword [esp + 0x68]
test ebp, ebp
mov dword [ebp + 0x40], 0
je 0x10018977
mov edx, dword [ebp]
test edx, edx
jle 0x10018977
cmp edx, 0x780
jg 0x10018977
mov eax, dword [ebp + 4]
test eax, eax
jle 0x10018977
cmp eax, 0x500
jg 0x10018977
and edx, 1
test edx, edx
jne 0x10018977
and eax, 1
test eax, eax
jne 0x10018977
mov esi, dword [ebp + 8]
test esi, esi
jle 0x10017f57
mov ebx, dword [ebp + 0xc]
test ebx, ebx
jg 0x10017f6f
mov dword [ebp + 8], 1
mov esi, 1
mov ebx, 0x19
mov dword [ebp + 0xc], 0x19
mov ecx, esi
cmp esi, 1
jle 0x10017fa8
mov eax, esi
cdq
idiv ecx
test edx, edx
jne 0x10017fa0
mov eax, ebx
cdq
idiv ecx
test edx, edx
jne 0x10017fa0
mov eax, esi
cdq
idiv ecx
mov esi, eax
mov dword [ebp + 8], esi
mov eax, ebx
cdq
idiv ecx
mov ecx, esi
mov ebx, eax
mov dword [ebp + 0xc], ebx
jmp 0x10017fa3
add ecx, 0xffffffff
cmp ecx, 1
jg 0x10017f76
cmp ebx, 0xffff
jle 0x10018020
fld dword [0x10321550]
mov dword [esp], ebx
fild dword [esp]
fld st(0)
fmulp st(2)
fxch st(1)
fdivr dword [0x1032154c]
fmul st(1), st(0)
fxch st(1)
fnstcw word [esp + 8]
movzx eax, word [esp + 8]
or eax, 0xc00
mov dword [esp + 0x10], eax
fldcw word [esp + 0x10]
fistp dword [esp + 0x18]
fldcw word [esp + 8]
mov ebx, dword [esp + 0x18]
mov dword [ebp + 0xc], ebx
mov dword [esp + 0x20], esi
fild dword [esp + 0x20]
fmulp st(1)
fnstcw word [esp + 8]
movzx eax, word [esp + 8]
or eax, 0xc00
mov dword [esp + 0x10], eax
fldcw word [esp + 0x10]
fistp dword [esp + 0x18]
fldcw word [esp + 8]
mov esi, dword [esp + 0x18]
mov dword [ebp + 8], esi
mov edx, dword [ebp + 0x10]
test edx, edx
jg 0x1001802e
mov dword [ebp + 0x10], 0xdbba0
mov edx, dword [ebp + 0x14]
test edx, edx
jg 0x1001803c
mov dword [ebp + 0x14], 0x10
mov edx, dword [ebp + 0x18]
test edx, edx
jg 0x1001804a
mov dword [ebp + 0x18], 0x64
mov edx, dword [ebp + 0x1c]
test edx, edx
jg 0x10018058
mov dword [ebp + 0x1c], 0x64
mov ecx, dword [ebp + 0x24]
test ecx, ecx
jle 0x10018064
cmp ecx, 0x1f
jle 0x10018070
mov dword [ebp + 0x24], 1
mov ecx, 1
mov edx, dword [ebp + 0x20]
test edx, edx
jle 0x1001807c
cmp edx, 0x1f
jle 0x10018081
mov edx, 0x1f
cmp ecx, edx
jg 0x10018087
mov ecx, edx
mov edx, dword [ebp + 0x28]
mov dword [ebp + 0x20], ecx
test edx, edx
jg 0x100180a0
lea eax, [esi + esi]
add eax, eax
add eax, esi
add eax, eax
cdq
idiv ebx
mov dword [ebp + 0x28], eax
push pe_nt_image_headers32
push 0x270
call fcn.10048808
mov ebx, eax
add esp, 8
test ebx, ebx
je 0x10018984
mov edi, ebx
xor eax, eax
mov ecx, 0x9c
rep stosd dword es:[edi], eax
push pe_nt_image_headers32
push 0xf0
mov ecx, dword [ebp]
mov dword [ebx], ecx
mov edx, dword [ebp + 4]
mov dword [ebx + 4], edx
add ecx, 0xf
shr ecx, 4
mov dword [ebx + 0x10], ecx
add edx, 0xf
shr edx, 4
mov dword [ebx + 0x14], edx
lea esi, [ecx + ecx]
add esi, esi
add esi, esi
lea ecx, [esi + ecx*8 + 0x80]
mov dword [ebx + 8], ecx
lea ecx, [edx + edx]
add ecx, ecx
add ecx, ecx
lea edx, [ecx + edx*8 + 0x80]
mov dword [ebx + 0xc], edx
mov edx, dword [ebp + 0xc]
mov dword [ebx + 0x1c], edx
mov esi, dword [ebp + 8]
mov dword [ebx + 0x18], esi
mov dword [ebx + 0x38], 0
mov dword [ebx + 0x268], 0xbf800000
mov ecx, dword [ebp + 0x10]
mov dword [ebx + 0x58], 0xffffffff
mov dword [ebx + 0x5c], ecx
mov edx, dword [ebp + 0x28]
mov dword [ebx + 0x30], edx
call fcn.10048808
push pe_nt_image_headers32
push 0xf0
mov dword [ebx + 0x60], eax
call fcn.10048808
add esp, 0x10
mov edx, dword [ebx + 0x60]
mov dword [ebx + 0x64], eax
test edx, edx
je 0x10018570
test eax, eax
je 0x10018570
push pe_nt_image_headers32
mov ecx, dword [ebx + 0x10]
lea edx, [ecx + ecx]
add edx, edx
add edx, edx
sub edx, ecx
add edx, edx
add edx, edx
add edx, edx
sub edx, ecx
add edx, edx
add edx, edx
add edx, edx
imul edx, dword [ebx + 0x14]
push edx
call fcn.10048808
push pe_nt_image_headers32
mov esi, dword [ebx + 0x60]
mov dword [esi + 0x3c], eax
mov ecx, dword [ebx + 0x10]
lea edx, [ecx + ecx]
add edx, edx
add edx, edx
sub edx, ecx
add edx, edx
add edx, edx
add edx, edx
sub edx, ecx
add edx, edx
add edx, edx
add edx, edx
imul edx, dword [ebx + 0x14]
push edx
call fcn.10048808
add esp, 0x10
mov ecx, dword [ebx + 0x64]
mov dword [ecx + 0x3c], eax
mov edx, dword [ebx + 0x60]
mov edx, dword [edx + 0x3c]
test edx, edx
je 0x10018559
mov esi, dword [ebx + 0x64]
mov ecx, dword [esi + 0x3c]
test ecx, ecx
je 0x10018559
mov edx, dword [ebp + 0x2c]
test edx, 0x200
je 0x100181f4
xor edx, edx
mov dword [ebx + 0x70], edx
mov dword [ebx + 0x6c], edx
mov dword [ebx + 0x68], edx
lea edi, [ebx + 0xdc]
xor edx, edx
mov dword [ebx + 0xe4], edx
mov dword [ebx + 0xe0], edx
mov dword [ebx + 0xdc], edx
lea esi, [ebx + 0xe8]
mov dword [ebx + 0xf0], edx
mov dword [ebx + 0xec], edx
mov dword [ebx + 0xe8], edx
lea ecx, [ebx + 0xf4]
mov dword [ebx + 0xfc], edx
mov dword [ebx + 0xf8], edx
mov dword [esp + 0x30], ecx
mov ecx, dword [ebx + 0x60]
mov dword [ebx + 0xf4], edx
mov dword [ecx + 0x38], edx
mov dword [ecx + 0x34], edx
mov dword [ecx + 0x30], edx
mov ecx, dword [ebx + 0x64]
mov dword [ecx + 0x38], edx
mov dword [ecx + 0x34], edx
mov dword [ecx + 0x30], edx
lea ecx, [ebx + 0x74]
mov dword [esp + 0x38], ecx
mov dword [ebx + 0x7c], edx
mov dword [ebx + 0x78], edx
mov dword [ebx + 0x74], edx
lea ecx, [ebx + 0x80]
mov dword [esp + 0x3c], ecx
mov dword [ebx + 0x88], edx
mov dword [ebx + 0x84], edx
mov dword [ebx + 0x80], edx
lea ecx, [ebx + 0x8c]
mov dword [esp + 0x40], ecx
mov dword [ebx + 0x94], edx
mov dword [ebx + 0x90], edx
mov dword [ebx + 0x8c], edx
lea ecx, [ebx + 0x98]
mov dword [esp + 0x44], ecx
mov dword [ebx + 0xa0], edx
mov dword [ebx + 0x9c], edx
mov dword [ebx + 0x98], edx
lea ecx, [ebx + 0xa4]
mov dword [esp + 0x48], ecx
mov dword [ebx + 0xac], edx
mov dword [ebx + 0xa8], edx
mov dword [ebx + 0xa4], edx
mov ecx, dword [ebp + 0x2c]
test ecx, 0x200
je 0x1001830a
push dword [ebx + 0xc]
push dword [ebx + 8]
lea edx, [ebx + 0x68]
push edx
call fcn.10023c88
add esp, 0xc
test eax, eax
jge 0x1001830a
lea edx, [ebx + 0xb0]
mov dword [esp + 0x34], edx
jmp 0x10018478
push dword [ebx + 0xc]
push dword [ebx + 8]
push edi
call fcn.10023c88
add esp, 0xc
test eax, eax
jge 0x1001832c
lea edx, [ebx + 0xb0]
mov dword [esp + 0x34], edx
jmp 0x10018478
push dword [ebx + 0xc]
push dword [ebx + 8]
push esi
call fcn.10023c88
add esp, 0xc
test eax, eax
jge 0x1001834e
lea edx, [ebx + 0xb0]
mov dword [esp + 0x34], edx
jmp 0x10018478
push dword [ebx + 0xc]
push dword [ebx + 8]
mov edx, dword [esp + 0x38]
push edx
call fcn.10023c88
add esp, 0xc
test eax, eax
jge 0x10018374
lea edx, [ebx + 0xb0]
mov dword [esp + 0x34], edx
jmp 0x10018478
push dword [ebx + 0xc]
push dword [ebx + 8]
mov edx, dword [ebx + 0x60]
add edx, 0x30
push edx
call fcn.10023c88
add esp, 0xc
test eax, eax
jge 0x1001839c
lea edx, [ebx + 0xb0]
mov dword [esp + 0x34], edx
jmp 0x10018478
push dword [ebx + 0xc]
push dword [ebx + 8]
mov edx, dword [ebx + 0x64]
add edx, 0x30
push edx
call fcn.10023c88
add esp, 0xc
test eax, eax
jge 0x100183c4
lea edx, [ebx + 0xb0]
mov dword [esp + 0x34], edx
jmp 0x10018478
push dword [ebx + 0xc]
push dword [ebx + 8]
mov edx, dword [esp + 0x40]
push edx
call fcn.10023c88
add esp, 0xc
test eax, eax
jge 0x100183ea
lea edx, [ebx + 0xb0]
mov dword [esp + 0x34], edx
jmp 0x10018478
push dword [ebx + 0xc]
push dword [ebx + 8]
mov edx, dword [esp + 0x44]
push edx
call fcn.10023c88
add esp, 0xc
test eax, eax
jge 0x1001840d
lea edx, [ebx + 0xb0]
mov dword [esp + 0x34], edx
jmp 0x10018478
push dword [ebx + 0xc]
push dword [ebx + 8]
mov edx, dword [esp + 0x48]
push edx
call fcn.10023c88
add esp, 0xc
test eax, eax
jge 0x10018430
lea edx, [ebx + 0xb0]
mov dword [esp + 0x34], edx
jmp 0x10018478
push dword [ebx + 0xc]
push dword [ebx + 8]
mov edx, dword [esp + 0x4c]
push edx
call fcn.10023c88
add esp, 0xc
test eax, eax
jge 0x10018453
lea edx, [ebx + 0xb0]
mov dword [esp + 0x34], edx
jmp 0x10018478
push dword [ebx + 0xc]
push dword [ebx + 8]
mov edx, dword [esp + 0x50]
push edx
call fcn.10023c88
add esp, 0xc
test eax, eax
jge 0x10018598
lea edx, [ebx + 0xb0]
mov dword [esp + 0x34], edx
mov edx, dword [ebx + 0x20]
test edx, 0x200
je 0x10018495
push dword [ebx + 0xc]
push dword [ebx + 8]
lea edx, [ebx + 0x68]
push edx
call fcn.10023db4
add esp, 0xc
push dword [ebx + 0xc]
push dword [ebx + 8]
push edi
call fcn.10023db4
push dword [ebx + 0xc]
push dword [ebx + 8]
push esi
call fcn.10023db4
push dword [ebx + 0xc]
push dword [ebx + 8]
mov edx, dword [esp + 0x50]
push edx
call fcn.10023db4
push dword [ebx + 0xc]
push dword [ebx + 8]
mov edx, dword [ebx + 0x60]
add edx, 0x30
push edx
call fcn.10023db4
push dword [ebx + 0xc]
push dword [ebx + 8]
mov edx, dword [ebx + 0x64]
add edx, 0x30
push edx
call fcn.10023db4
push dword [ebx + 0xc]
push dword [ebx + 8]
mov edx, dword [esp + 0x7c]
push edx
call fcn.10023db4
push dword [ebx + 0xc]
push dword [ebx + 8]
mov edx, dword [esp + 0x8c]
push edx
call fcn.10023db4
push dword [ebx + 0xc]
push dword [ebx + 8]
mov edx, dword [esp + 0x9c]
push edx
call fcn.10023db4
push dword [ebx + 0xc]
push dword [ebx + 8]
mov edx, dword [esp + 0xac]
push edx
call fcn.10023db4
push dword [ebx + 0xc]
push dword [ebx + 8]
mov edx, dword [esp + 0xbc]
push edx
call fcn.10023db4
add esp, 0x78
push dword [ebx + 0xc]
push dword [ebx + 8]
mov edx, dword [esp + 0x3c]
push edx
call fcn.10023db4
add esp, 0xc
mov edx, dword [ebx + 0x60]
mov edx, dword [edx + 0x3c]
push edx
call fcn.10048858
mov edx, dword [ebx + 0x64]
push dword [edx + 0x3c]
call fcn.10048858
add esp, 8
mov edx, dword [ebx + 0x60]
push edx
call fcn.10048858
push dword [ebx + 0x64]
call fcn.10048858
push ebx
call fcn.10048858
mov dword [ebp + 0x40], 0
mov eax, 1
add esp, 0x60
pop ebx
pop ebp
pop esi
pop edi
ret
lea edx, [ebx + 0xb0]
mov dword [esp + 0x34], edx
push dword [ebx + 0xc]
push dword [ebx + 8]
push edx
call fcn.10023c88
add esp, 0xc
test eax, eax
jl 0x10018478
mov edx, dword [ebp + 0x2c]
mov dword [ebx + 0x20], edx
mov edx, dword [ebp + 0x30]
mov dword [esp + 0x4c], edx
mov dword [ebx + 0x34], edx
mov ecx, dword [ebp + 0x34]
mov dword [ebx + 0x24], ecx
mov ecx, dword [ebp + 0x38]
mov dword [ebx + 0x28], ecx
mov ecx, dword [ebp + 0x3c]
mov dword [ebx + 0x2c], ecx
mov dword [ebx + 0xd8], 0
test edx, edx
jle 0x10018634
push pe_nt_image_headers32
add edx, edx
add edx, edx
push edx
call fcn.10048808
add esp, 8
mov dword [ebx + 0xd8], eax
test eax, eax
je 0x10018478
mov ecx, dword [ebx + 0x34]
mov dword [esp + 0x4c], ecx
xor edx, edx
test ecx, ecx
jg 0x1001861e
jmp 0x10018756
mov eax, dword [ebx + 0xd8]
mov dword [eax + edx*4], 0
mov ecx, dword [ebx + 0x34]
add edx, 1
cmp edx, ecx
jl 0x10018618
jmp 0x10018752
mov dword [ebx + 0x100], 0xffffffff
xor ecx, ecx
mov dword [ebx + 0xcc], ecx
mov dword [ebx + 0xd0], ecx
mov dword [ebx + 0xd4], ecx
mov dword [ebx + 0xc8], ecx
test edx, edx
jle 0x100186d0
mov ecx, edx
push pe_nt_image_headers32
add ecx, ecx
add ecx, ecx
lea edx, [ecx + ecx]
add edx, ecx
push edx
call fcn.10048808
add esp, 8
mov dword [ebx + 0xc8], eax
test eax, eax
je 0x10018963
mov edx, dword [ebx + 0x34]
mov dword [esp + 0x50], edx
xor ecx, ecx
test edx, edx
mov dword [esp + 0x2c], ecx
jle 0x100188aa
mov edx, ecx
lea ecx, [edx + edx]
add ecx, ecx
lea edx, [ecx + ecx]
add edx, ecx
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x4c], edx
jmp 0x100186b1
mov eax, dword [ebx + 0xc8]
xor ebp, ebp
mov dword [eax + edx + 8], ebp
mov dword [eax + edx + 4], ebp
add ecx, 1
mov dword [eax + edx], ebp
mov ebp, dword [ebx + 0x34]
add edx, 0xc
cmp ecx, ebp
jl 0x100186ab
jmp 0x100188a2
mov esi, dword [ebx + 0x60]
xor ecx, ecx
mov dword [ebx + 0xbc], ecx
mov dword [ebx + 0xc0], ecx
mov dword [ebx + 0xc4], ecx
mov dword [ebx + 0x50], ecx
mov dword [ebx + 0x54], ecx
mov dword [ebx + 0x104], ecx
mov dword [esi + 0x28], ecx
mov dword [esi + 0x2c], ecx
mov edx, dword [ebx + 0x64]
mov dword [edx + 0x28], ecx
mov dword [edx + 0x2c], ecx
mov ecx, dword [ebp + 0x10]
mov dword [ebp + 0x40], ebx
test ecx, ecx
je 0x10018748
push dword [ebp + 0x24]
push dword [ebp + 0x20]
mov esi, dword [ebp + 0xc]
add ebx, 0x108
lea edx, [esi + esi]
add edx, edx
sub edx, esi
lea edx, [esi + edx*8]
mov esi, dword [ebp + 8]
lea eax, [edx + edx*4]
add eax, eax
add eax, eax
add eax, eax
cdq
idiv esi
push eax
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
push dword [ebp + 0x14]
push ecx
push ebx
call fcn.10064ac8
add esp, 0x20
xor eax, eax
add esp, 0x54
pop ebx
pop ebp
pop esi
pop edi
ret
mov dword [esp + 0x4c], ecx
mov edx, ecx
xor eax, eax
test edx, edx
jle 0x10018634
mov ebp, eax
push pe_nt_image_headers32
push 0xf0
call fcn.10048808
add esp, 8
mov edx, dword [ebx + 0xd8]
mov dword [edx + ebp*4], eax
mov ecx, dword [ebx + 0xd8]
mov edx, dword [ecx + ebp*4]
test edx, edx
je 0x1001896b
push pe_nt_image_headers32
mov ecx, dword [ebx + 0x10]
lea edx, [ecx + ecx]
add edx, edx
add edx, edx
sub edx, ecx
add edx, edx
add edx, edx
add edx, edx
sub edx, ecx
add edx, edx
add edx, edx
add edx, edx
imul edx, dword [ebx + 0x14]
push edx
call fcn.10048808
add esp, 8
mov edx, dword [ebx + 0xd8]
mov edx, dword [edx + ebp*4]
mov dword [edx + 0x3c], eax
mov edx, dword [ebx + 0xd8]
mov edx, dword [edx + ebp*4]
mov ecx, dword [edx + 0x3c]
test ecx, ecx
je 0x1001881b
xor ecx, ecx
mov dword [edx + 0x38], ecx
mov dword [edx + 0x34], ecx
mov dword [edx + 0x30], ecx
mov ecx, dword [ebx + 0xd8]
mov edx, dword [ecx + ebp*4]
push dword [ebx + 0xc]
push dword [ebx + 8]
add edx, 0x30
push edx
call fcn.10023c88
add esp, 0xc
test eax, eax
jl 0x10018891
mov edx, dword [ebx + 0x34]
add ebp, 1
cmp ebp, edx
jl 0x10018764
mov ebp, dword [esp + 0x68]
mov dword [esp + 0x4c], edx
jmp 0x10018634
mov ebp, dword [esp + 0x68]
mov edx, dword [ebx + 0x34]
test edx, edx
jle 0x10018478
mov eax, 0
jle 0x1001889a
mov ecx, dword [ebx + 0xd8]
mov ebp, eax
mov eax, dword [ecx + ebp*4]
test eax, eax
je 0x1001887a
push dword [ebx + 0xc]
push dword [ebx + 8]
add eax, 0x30
push eax
call fcn.10023db4
mov ecx, dword [ebx + 0xd8]
mov edx, dword [ecx + ebp*4]
push dword [edx + 0x3c]
call fcn.10048858
mov edx, dword [ebx + 0xd8]
push dword [edx + ebp*4]
call fcn.10048858
add esp, 0x14
mov edx, dword [ebx + 0x34]
mov ecx, dword [ebx + 0xd8]
add ebp, 1
cmp ebp, edx
jl 0x10018839
mov ebp, dword [esp + 0x68]
push ecx
call fcn.10048858
pop ecx
jmp 0x10018478
mov ebp, dword [esp + 0x68]
mov edx, dword [ebx + 0x34]
jmp 0x10018822
mov ecx, dword [ebx + 0xd8]
jmp 0x10018885
mov dword [esp + 0x50], ebp
mov ebp, dword [esp + 0x68]
mov edx, dword [esp + 0x50]
xor eax, eax
test edx, edx
jle 0x100186d0
mov dword [esp + 0x28], edi
lea edx, [eax + eax]
add edx, edx
lea ecx, [edx + edx]
add ecx, edx
mov edi, eax
mov ebp, ecx
push dword [ebx + 0xc]
push dword [ebx + 8]
mov edx, ebp
add edx, dword [ebx + 0xc8]
push edx
call fcn.10023c88
add esp, 0xc
test eax, eax
jl 0x100188f9
add ebp, 0xc
add edi, 1
cmp edi, dword [ebx + 0x34]
jl 0x100188ca
mov ebp, dword [esp + 0x68]
jmp 0x100186d0
mov edi, dword [esp + 0x28]
mov ebp, dword [esp + 0x68]
mov edx, dword [ebx + 0x34]
test edx, edx
jle 0x10018822
mov eax, 0
jle 0x1001894f
mov dword [esp + 0x28], edi
lea ecx, [eax + eax]
add ecx, ecx
lea edx, [ecx + ecx]
add edx, ecx
mov edi, eax
mov ebp, edx
push dword [ebx + 0xc]
push dword [ebx + 8]
mov ecx, ebp
add ecx, dword [ebx + 0xc8]
push ecx
call fcn.10023db4
add esp, 0xc
add ebp, 0xc
add edi, 1
cmp edi, dword [ebx + 0x34]
jl 0x10018925
mov edi, dword [esp + 0x28]
mov ebp, dword [esp + 0x68]
push dword [ebx + 0xc8]
call fcn.10048858
pop ecx
mov edx, dword [ebx + 0x34]
jmp 0x10018822
mov edx, dword [ebx + 0x34]
jmp 0x10018822
mov ebp, dword [esp + 0x68]
mov edx, dword [ebx + 0x34]
jmp 0x10018822
mov eax, 2
add esp, 0x54
pop ebx
pop ebp
pop esi
pop edi
ret
mov eax, 1
add esp, 0x54
pop ebx
pop ebp
pop esi
pop edi
ret