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

Disassembly:
sub esp, 0x234
push ebx
push ebp
push esi
mov esi, dword [esp + 0x244]
mov eax, dword [esi]
mov ebp, dword [eax + 0xc]
mov ecx, dword [esi + 0x28]
mov eax, 0x24924925
mul ecx
sub ecx, edx
shr ecx, 1
add ecx, edx
shr ecx, 3
push edi
mov edi, dword [esp + 0x24c]
mov eax, dword [edi + 0x64]
mov dword [esp + 0x74], ecx
lea ecx, [esp + 0xa8]
push ecx
push 4
lea ebp, [ebp*8 + 0x1016c3a0]
push eax
mov dword [esp + 0x28], ebp
call fcn.10050b80
mov dword [esp + 0x70], eax
mov eax, dword [ebp]
add esp, 0xc
cmp eax, 0x1469
je 0x10098714
jmp 0x10097f10
lea ecx, [eax + 0x1016af30]
mov al, byte [ecx]
xor esi, esi
xor ebx, ebx
mov dword [esp + 0x68], esi
mov dword [esp + 0x60], ebx
mov dword [esp + 0x4c], esi
mov dword [esp + 0x50], esi
test al, al
je 0x100986f8
mov byte [esp + 0x1b], 0
cmp al, 0x20
jne 0x10097f46
lea ecx, [ecx]
inc ecx
cmp byte [ecx], 0x20
je 0x10097f40
mov eax, dword [esp + 0x64]
lea edx, [esp + 0x70]
push edx
mov edx, dword [esp + 0x24c]
push eax
push edx
push ecx
call fcn.10096520
mov edx, dword [esp + 0x80]
add esp, 0x10
mov ecx, eax
mov dword [esp + 0x78], ecx
test edx, edx
je 0x10098580
test byte [ebp + 4], 1
mov eax, 0
setne al
mov dword [esp + 0x6c], 0
add eax, 0x7fffffff
mov dword [esp + 0x48], eax
test edx, edx
jbe 0x10098551
jmp 0x10097fa0
mov eax, dword [esp + 0x64]
mov eax, dword [eax]
mov byte [esp + 0x13], 0
test eax, eax
je 0x10098523
push 1
push eax
push edi
call fcn.1004f9d0
mov ecx, dword [edi + 0x54]
mov esi, dword [ecx + 0x74]
mov ebp, dword [ecx + 0x70]
mov edx, dword [ecx + 0x6c]
add ecx, 0x6c
mov dword [esp + 0x94], esi
mov esi, dword [ecx + 0xc]
mov ecx, dword [ecx + 0x10]
add esp, 0xc
mov dword [esp + 0x84], ebp
mov dword [esp + 0x8c], esi
mov dword [esp + 0x90], ecx
test eax, eax
jne 0x10098523
mov eax, edx
shr eax, 0x10
cmp ax, 2
jle 0x10098523
xor edi, edi
movsx eax, dx
or ebx, 0xffffffff
cmp eax, edi
mov dword [esp + 0x14], edi
mov dword [esp + 0x38], edi
mov dword [esp + 0x3c], edi
mov dword [esp + 0x24], edi
mov dword [esp + 0x5c], eax
jle 0x100984f7
jmp 0x10098030
mov ecx, dword [esp + 0x8c]
mov edx, dword [esp + 0x24]
movsx esi, word [ecx + edx*2]
cmp esi, edi
mov dword [esp + 0x54], ebx
jle 0x100980fb
mov eax, dword [esp + 0x1c]
movzx eax, word [eax + 4]
mov ecx, edi
test al, 3
jne 0x100980a6
cmp edi, esi
jg 0x100980fb
lea eax, [ebp + edi*8 + 4]
mov ebp, dword [esp + 0x14]
lea esp, [esp]
test ebx, ebx
jl 0x1009808a
mov edx, dword [eax]
cmp edx, ebp
jl 0x1009808a
cmp dword [esp + 0x4c], edx
mov ebp, dword [esp + 0x14]
jg 0x1009809c
mov dword [esp + 0x4c], edx
jmp 0x1009809c
mov ebp, dword [eax]
cmp dword [esp + 0x50], ebp
mov ebx, ecx
mov dword [esp + 0x14], ebp
jl 0x1009809c
mov dword [esp + 0x50], ebp
inc ecx
add eax, 8
cmp ecx, esi
jle 0x10098070
jmp 0x100980e6
cmp edi, esi
jg 0x100980fb
lea eax, [ebp + edi*8 + 4]
mov ebp, dword [esp + 0x14]
test ebx, ebx
jl 0x100980cc
mov edx, dword [eax]
cmp edx, ebp
jg 0x100980cc
cmp dword [esp + 0x50], edx
mov ebp, dword [esp + 0x14]
jl 0x100980de
mov dword [esp + 0x50], edx
jmp 0x100980de
mov ebp, dword [eax]
cmp dword [esp + 0x4c], ebp
mov ebx, ecx
mov dword [esp + 0x14], ebp
jg 0x100980de
mov dword [esp + 0x4c], ebp
inc ecx
add eax, 8
cmp ecx, esi
jle 0x100980b2
mov ebp, dword [esp + 0x84]
cmp ebx, dword [esp + 0x54]
je 0x100980fb
mov dword [esp + 0x38], edi
mov dword [esp + 0x3c], esi
mov eax, dword [esp + 0x24]
inc eax
cmp eax, dword [esp + 0x5c]
lea edi, [esi + 1]
mov dword [esp + 0x24], eax
jl 0x10098030
test ebx, ebx
jl 0x100984f7
mov edx, dword [esp + 0x88]
mov al, byte [edx + ebx]
and al, 3
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x44], ebx
cmp al, 1
jne 0x1009813b
mov dword [esp + 0x28], ebx
mov dword [esp + 0x34], ebx
jmp 0x10098146
or eax, 0xffffffff
mov dword [esp + 0x28], eax
mov dword [esp + 0x34], eax
mov eax, ebx
mov dword [esp + 0x24], ebx
lea esp, [esp]
cmp eax, dword [esp + 0x38]
jle 0x10098159
dec eax
jmp 0x1009815d
mov eax, dword [esp + 0x3c]
mov ecx, dword [ebp + eax*8 + 4]
mov edx, dword [esp + 0x14]
mov esi, ecx
sub esi, edx
jns 0x1009816f
mov esi, edx
sub esi, ecx
cmp esi, 5
jle 0x10098191
mov edx, dword [ebp + eax*8]
mov edi, dword [ebp + ebx*8]
mov ecx, edx
sub ecx, edi
jns 0x10098186
mov ecx, edi
sub ecx, edx
lea edx, [esi + esi*4]
add edx, edx
add edx, edx
cmp ecx, edx
jle 0x100981ba
mov ecx, dword [esp + 0x88]
mov dl, byte [eax + ecx]
and dl, 3
mov dword [esp + 0x2c], eax
cmp dl, 1
jne 0x100981b6
cmp dword [esp + 0x34], 0
mov dword [esp + 0x28], eax
jge 0x100981b6
mov dword [esp + 0x34], eax
cmp eax, ebx
jne 0x10098150
mov esi, dword [esp + 0x24]
mov ecx, dword [esp + 0x14]
mov edi, dword [ebp + ebx*8]
cmp esi, dword [esp + 0x3c]
jge 0x100981cf
inc esi
jmp 0x100981d3
mov esi, dword [esp + 0x38]
mov eax, dword [ebp + esi*8 + 4]
mov edx, eax
sub edx, ecx
jns 0x100981e1
mov edx, ecx
sub edx, eax
cmp edx, 5
jle 0x10098203
mov ecx, dword [ebp + esi*8]
mov eax, ecx
sub eax, edi
jns 0x100981f4
mov eax, edi
sub eax, ecx
lea ecx, [edx + edx*4]
add ecx, ecx
add ecx, ecx
cmp eax, ecx
jle 0x1009822a
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x88]
mov al, byte [esi + edx]
and al, 3
mov dword [esp + 0x44], esi
cmp al, 1
jne 0x10098226
cmp dword [esp + 0x28], 0
mov dword [esp + 0x34], esi
jge 0x10098226
mov dword [esp + 0x28], esi
cmp esi, ebx
jne 0x100981c6
mov ecx, dword [esp + 0x1c]
movzx eax, word [ecx + 4]
mov dword [esp + 0x24], esi
test al, 0x10
je 0x10098483
mov edx, dword [esp + 0x248]
mov ecx, dword [edx + 0x28]
mov eax, 0x51eb851f
mul ecx
mov eax, dword [esp + 0x44]
mov esi, dword [ebp + eax*8]
shr edx, 3
mov dword [esp + 0x5c], edx
mov edx, dword [esp + 0x2c]
mov eax, dword [ebp + edx*8]
mov edi, esi
sub edi, eax
jns 0x10098270
sub eax, esi
jmp 0x10098272
mov eax, edi
cmp eax, dword [esp + 0x5c]
jge 0x10098483
mov eax, dword [esp + 0x44]
sub eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
mov edi, esi
add eax, 2
sub edi, edx
cmp eax, edi
jg 0x10098483
shr ecx, 2
xor eax, eax
mov dword [esp + 0x7c], ecx
mov ecx, dword [ebp + ebx*8]
mov dword [esp + 0x30], eax
mov dword [esp + 0x58], eax
mov eax, ebx
cmp eax, edx
jle 0x100982b9
dec eax
jmp 0x100982bb
mov eax, esi
cmp dword [ebp + eax*8], ecx
jne 0x100982ca
cmp eax, ebx
jne 0x100982b2
jmp 0x10098523
cmp eax, ebx
je 0x10098523
cmp dword [ebp + eax*8], ecx
mov eax, dword [esp + 0x44]
setl byte [esp + 0x43]
mov ebx, eax
mov byte [esp + 0x13], 0
cmp byte [esp + 0x13], 0
jne 0x1009831b
mov edx, dword [esp + 0x88]
mov cl, byte [eax + edx]
and cl, 3
mov ebx, eax
cmp cl, 1
jne 0x1009830b
mov dword [esp + 0x30], eax
mov dword [esp + 0x58], eax
jmp 0x10098316
or ecx, 0xffffffff
mov dword [esp + 0x30], ecx
mov dword [esp + 0x58], ecx
mov byte [esp + 0x13], 1
cmp eax, dword [esp + 0x3c]
jge 0x10098324
inc eax
jmp 0x10098328
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x14]
mov ecx, dword [ebp + ebx*8 + 4]
mov esi, edx
sub esi, ecx
jns 0x1009833a
mov esi, ecx
sub esi, edx
cmp esi, dword [esp + 0x7c]
jle 0x1009834a
mov byte [esp + 0x13], 0
jmp 0x100983d3
mov esi, dword [ebp + eax*8 + 4]
mov edi, esi
sub edi, ecx
jns 0x1009835e
sub ecx, esi
mov edx, ecx
mov dword [esp + 0x54], edx
jmp 0x10098364
mov edx, edi
mov dword [esp + 0x54], edi
cmp edx, 5
jle 0x1009838f
mov esi, dword [ebp + eax*8]
mov ecx, dword [ebp + ebx*8]
mov edi, esi
sub edi, ecx
jns 0x1009837b
sub ecx, esi
jmp 0x1009837d
mov ecx, edi
lea edx, [edx + edx*4]
add edx, edx
add edx, edx
cmp ecx, edx
jg 0x1009838f
mov byte [esp + 0x13], 0
jmp 0x100983d3
mov ecx, dword [esp + 0x88]
mov dl, byte [eax + ecx]
and dl, 3
cmp dl, 1
jne 0x100983b0
cmp dword [esp + 0x30], 0
mov dword [esp + 0x58], eax
jge 0x100983b0
mov dword [esp + 0x30], eax
mov ecx, dword [ebp + ebx*8]
mov esi, dword [ebp + eax*8]
cmp ecx, esi
mov edi, esi
setl dl
sub edi, ecx
jns 0x100983c7
sub ecx, esi
mov edi, ecx
cmp dl, byte [esp + 0x43]
jne 0x100983d3
cmp edi, dword [esp + 0x5c]
jge 0x100983e2
cmp eax, dword [esp + 0x2c]
jne 0x100982e6
jmp 0x10098483
mov esi, dword [ebp + ebx*8 + 4]
mov edi, dword [ebp + ebx*8]
mov dword [esp + 0x20], ebx
mov ebx, dword [esp + 0x58]
cmp eax, dword [esp + 0x3c]
jge 0x100983fb
inc eax
jmp 0x100983ff
mov eax, dword [esp + 0x38]
mov edx, dword [ebp + eax*8 + 4]
mov ecx, edx
sub ecx, esi
jns 0x1009840d
mov ecx, esi
sub ecx, edx
cmp ecx, 5
jle 0x10098433
mov ecx, dword [esp + 0x24]
mov edx, dword [ebp + ecx*8]
mov ecx, edx
sub ecx, edi
jns 0x10098424
mov ecx, edi
sub ecx, edx
mov edx, dword [esp + 0x54]
lea edx, [edx + edx*4]
add edx, edx
add edx, edx
cmp ecx, edx
jle 0x1009845a
mov ecx, dword [esp + 0x88]
mov dl, byte [eax + ecx]
and dl, 3
mov ebx, eax
cmp dl, 1
jne 0x10098452
cmp dword [esp + 0x30], 0
jge 0x10098452
mov dword [esp + 0x30], eax
cmp eax, dword [esp + 0x2c]
jne 0x100983f2
jmp 0x10098467
cmp eax, dword [esp + 0x38]
jle 0x10098463
dec eax
jmp 0x10098467
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x30]
mov dword [esp + 0x14], esi
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x44], eax
mov dword [esp + 0x28], edx
mov dword [esp + 0x34], ebx
cmp dword [esp + 0x28], 0
jl 0x100984ba
cmp dword [esp + 0x34], 0
jl 0x100984ba
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x28]
mov ecx, dword [ebp + eax*8]
mov eax, dword [ebp + edx*8]
mov edx, ecx
sub edx, eax
jns 0x100984ab
sub eax, ecx
jmp 0x100984ad
mov eax, edx
cmp eax, dword [esp + 0x74]
jle 0x100984ba
mov byte [esp + 0x13], 0
jmp 0x100984f7
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x2c]
mov dl, byte [eax + ecx]
and dl, 3
cmp dl, 1
jne 0x100984e6
mov ecx, dword [esp + 0x44]
mov dl, byte [eax + ecx]
and dl, 3
cmp dl, 1
jne 0x100984e6
mov byte [esp + 0x13], 0
jmp 0x100984f7
mov eax, dword [esp + 0x1c]
movzx eax, word [eax + 4]
mov byte [esp + 0x13], 1
test al, 4
jne 0x10098523
mov ecx, dword [esp + 0x1c]
test byte [ecx + 4], 1
mov edx, dword [esp + 0x48]
je 0x1009850d
cmp dword [esp + 0x14], edx
jle 0x10098523
jmp 0x10098513
cmp dword [esp + 0x14], edx
jge 0x10098523
mov cl, byte [esp + 0x13]
mov eax, dword [esp + 0x14]
mov byte [esp + 0x1b], cl
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x6c]
mov edi, dword [esp + 0x24c]
inc eax
mov dword [esp + 0x6c], eax
cmp eax, dword [esp + 0x70]
jb 0x10097fa0
mov ebp, dword [esp + 0x1c]
mov eax, dword [esp + 0x48]
mov ebx, dword [esp + 0x60]
mov esi, dword [esp + 0x68]
mov ecx, dword [esp + 0x78]
cmp eax, 0x80000000
je 0x10098580
cmp eax, 0x7fffffff
je 0x10098580
cmp byte [esp + 0x1b], 0
je 0x10098574
mov dword [esp + ebx*4 + 0x178], eax
inc ebx
mov dword [esp + 0x60], ebx
jmp 0x10098580
mov dword [esp + esi*4 + 0xac], eax
inc esi
mov dword [esp + 0x68], esi
mov al, byte [ecx]
test al, al
jne 0x10097f34
test esi, esi
jne 0x10098596
test ebx, ebx
je 0x100986f8
mov ebx, dword [esp + 0x60]
mov esi, 1
cmp ebx, esi
jbe 0x100985da
mov eax, esi
test esi, esi
jbe 0x100985d5
lea esp, [esp]
mov ecx, dword [esp + eax*4 + 0x178]
mov edx, dword [esp + eax*4 + 0x174]
cmp ecx, edx
jge 0x100985d5
sub eax, 1
mov dword [esp + eax*4 + 0x17c], edx
mov dword [esp + eax*4 + 0x178], ecx
jne 0x100985b0
inc esi
cmp esi, ebx
jb 0x100985a3
mov edi, dword [esp + 0x68]
mov esi, 1
cmp edi, esi
jbe 0x1009861a
mov eax, esi
test esi, esi
jbe 0x10098615
lea ecx, [ecx]
mov ecx, dword [esp + eax*4 + 0xac]
mov edx, dword [esp + eax*4 + 0xa8]
cmp ecx, edx
jge 0x10098615
sub eax, 1
mov dword [esp + eax*4 + 0xb0], edx
mov dword [esp + eax*4 + 0xac], ecx
jne 0x100985f0
inc esi
cmp esi, edi
jb 0x100985e7
mov edx, dword [esp + 0x248]
mov eax, dword [edx + 0x2534]
lea ecx, [eax + eax*8]
inc eax
lea ecx, [edx + ecx*4 + 0x2538]
mov dword [edx + 0x2534], eax
test edi, edi
jne 0x1009864c
shr ebx, 1
mov eax, dword [esp + ebx*4 + 0x178]
mov dword [ecx + 0xc], eax
mov dword [ecx], eax
jmp 0x10098675
shr edi, 1
test ebx, ebx
jne 0x10098660
mov eax, dword [esp + edi*4 + 0xac]
mov dword [ecx + 0xc], eax
mov dword [ecx], eax
jmp 0x10098675
mov edx, dword [esp + edi*4 + 0xac]
shr ebx, 1
mov eax, dword [esp + ebx*4 + 0x178]
mov dword [ecx], edx
mov dword [ecx + 0xc], eax
mov esi, dword [ecx]
mov edi, dword [esp + 0x1c]
cmp dword [ecx + 0xc], esi
je 0x100986ad
mov eax, dword [ecx + 0xc]
movzx edx, word [edi + 4]
cmp eax, esi
setg bl
test dl, 3
jne 0x10098695
xor edx, edx
jmp 0x1009869a
mov edx, 1
movzx ebx, bl
xor ebx, edx
je 0x100986ad
add eax, esi
cdq
sub eax, edx
sar eax, 1
mov dword [ecx + 0xc], eax
mov dword [ecx], eax
mov edx, dword [esp + 0x4c]
mov eax, dword [esp + 0x50]
mov dword [ecx + 0x18], edx
mov dword [ecx + 0x1c], eax
mov dword [ecx + 0x20], 0
test byte [edi + 4], 1
je 0x100986cf
mov dword [ecx + 0x20], 2
test byte [edi + 4], 2
je 0x100986d9
or dword [ecx + 0x20], 4
test byte [edi + 4], 4
je 0x100986e3
or dword [ecx + 0x20], 8
test byte [edi + 4], 8
je 0x100986ed
or dword [ecx + 0x20], 0x10
mov ebp, dword [esp + 0x1c]
mov edi, dword [esp + 0x24c]
mov eax, dword [ebp + 8]
add ebp, 8
mov dword [esp + 0x1c], ebp
cmp eax, 0x1469
jne 0x10097f10
mov esi, dword [esp + 0x248]
mov ecx, dword [esp + 0x64]
mov edx, dword [edi + 0x64]
push ecx
push edx
call fcn.1004f1e0
mov edi, dword [esi + 0x2534]
add esp, 8
test edi, edi
je 0x100987a4
xor eax, eax
test edi, edi
jbe 0x1009874f
mov edx, edi
lea ecx, [esi + 0x2538]
lea ecx, [ecx]
mov dword [esp + eax*4 + 0x80], ecx
inc eax
add ecx, 0x24
cmp eax, edx
jb 0x10098740
push edi
lea esi, [esp + 0x84]
call fcn.100945a0
add esp, 4
xor ecx, ecx
add edi, 0xffffffff
je 0x100987a4
mov esi, dword [esp + 0x248]
mov bl, 6
nop
mov eax, dword [esp + ecx*4 + 0x80]
lea edx, [eax + 0xc]
test byte [eax + 0x20], bl
jne 0x10098781
mov edx, eax
mov eax, dword [esp + ecx*4 + 0x84]
test byte [eax + 0x20], bl
je 0x10098790
add eax, 0xc
mov eax, dword [eax]
cmp dword [edx], eax
jle 0x10098798
mov dword [edx], eax
mov eax, dword [esi + 0x2534]
inc ecx
dec eax
cmp ecx, eax
jb 0x10098770
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x234
ret