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

Disassembly:
sub esp, 0x4c
push ebx
push ebp
mov ecx, dword [esp + 0x58]
push esi
mov esi, dword [esp + 0x64]
push edi
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0x70
mov eax, dword [esi + 0x154]
mov dword [esp + 0x44], eax
mov eax, dword [esi]
cmp ecx, eax
jg 0x45efbd
cmp ecx, dword [esi + 4]
jl 0x45efbd
mov edx, dword [esp + 0x64]
mov eax, dword [esi + 8]
cmp edx, eax
jg 0x45efbd
cmp edx, dword [esi + 0xc]
jl 0x45efbd
mov eax, dword [esp + 0x6c]
cmp eax, 1
mov eax, dword [esi + 0xdc]
jne 0x45e6b7
test eax, eax
je 0x45e6a7
mov eax, dword [esi + 0x58]
mov ebp, dword [esi + 0x54]
mov dword [esp + 0x10], eax
mov edi, ecx
mov ebx, edx
jmp 0x45e6cf
mov eax, dword [esi + 0x30]
mov ebp, dword [esi + 0x2c]
mov dword [esp + 0x10], eax
mov edi, ecx
mov ebx, edx
jmp 0x45e6cf
test eax, eax
je 0x45e6c3
mov edi, dword [esi + 0x4c]
mov ebx, dword [esi + 0x50]
jmp 0x45e6c9
mov edi, dword [esi + 0x24]
mov ebx, dword [esi + 0x28]
mov ebp, ecx
mov dword [esp + 0x10], edx
mov eax, dword [esi + 0xdc]
test eax, eax
jne 0x45e755
mov ecx, edi
mov eax, dword [esi + 0xd0]
and ecx, 1
mov edx, ebx
add ecx, ecx
and edx, 1
or ecx, edx
mov edx, ebx
sar edx, 1
imul edx, eax
mov ecx, dword [esi + ecx*4 + 0xa0]
mov dword [esp + 0x38], edi
add ecx, edx
mov edx, edi
sar edx, 1
add ecx, edx
mov edx, dword [esp + 0x10]
mov dword [esp + 0x68], ecx
mov ecx, ebp
and ecx, 1
and edx, 1
add ecx, ecx
mov dword [esp + 0x3c], ebx
or ecx, edx
mov edx, dword [esp + 0x10]
sar edx, 1
imul edx, eax
mov eax, dword [esi + ecx*4 + 0xe4]
mov ecx, ebp
add eax, edx
mov edx, dword [esp + 0x6c]
sar ecx, 1
add eax, ecx
mov dword [esp + 0x40], ebp
mov dword [esp + 0x34], eax
lea eax, [esi + edx*8 + 0x1c]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x24], eax
jmp 0x45e7b6
push esi
push 0
push ebx
push edi
call fcn.00450100
mov ecx, dword [esp + 0x7c]
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0x20]
push esi
push 1
lea edx, [esi + ecx*8 + 0x44]
push eax
push ebp
mov dword [esp + 0x68], edx
call fcn.00450100
mov dword [esp + 0x54], eax
mov eax, edi
cdq
sub eax, edx
add esp, 0x20
sar eax, 1
mov dword [esp + 0x38], eax
mov eax, ebx
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0x3c], eax
mov eax, ebp
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x10]
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x10]
mov ecx, dword [esi + 0xd8]
mov edx, dword [esi + 0xdc]
xor ecx, edx
mov edx, dword [esi + 0x98]
shl eax, cl
shl edi, cl
shl ebx, cl
shl ebp, cl
mov ecx, dword [esi + 0x100]
sub eax, ecx
sub edi, edx
mov edx, dword [esi + 0x9c]
mov dword [esp + 0x2c], eax
mov eax, dword [esi + 0xd4]
sub ebx, edx
mov edx, dword [esi + 0xfc]
lea ecx, [eax - 1]
sub ebp, edx
mov dword [esp + 0x30], ecx
lea ecx, [eax - 1]
mov eax, edi
mov dword [esp + 0x28], ecx
cdq
xor eax, edx
sub eax, edx
neg eax
sar eax, cl
mov dword [esp + 0x20], eax
mov eax, ebx
cdq
xor eax, edx
sub eax, edx
neg eax
sar eax, cl
mov ecx, dword [esp + 0x20]
mov ecx, dword [ecx*4 + 0x4712ac]
mov edx, dword [eax*4 + 0x4712ac]
mov eax, ebp
add ecx, edx
cdq
xor eax, edx
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x30]
sub eax, edx
neg eax
sar eax, cl
mov ecx, dword [esp + 0x28]
mov edx, dword [eax*4 + 0x4712ac]
mov eax, dword [esp + 0x2c]
add ecx, edx
cdq
xor eax, edx
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x30]
sub eax, edx
neg eax
sar eax, cl
mov ecx, dword [esp + 0x28]
add ecx, dword [eax*4 + 0x4712ac]
neg ebp
mov eax, ecx
mov ecx, dword [esi + 0xd4]
sbb ebp, ebp
and ebp, ecx
add eax, ebp
mov edx, eax
mov eax, dword [esp + 0x2c]
neg eax
sbb eax, eax
and eax, ecx
add edx, eax
neg edi
sbb edi, edi
and edi, ecx
add edx, edi
neg ebx
sbb ebx, ebx
and ebx, ecx
lea ebx, [edx + ebx + 2]
lea eax, [esi + 0x170]
shl ebx, 4
xor edx, edx
mov dword [esp + 0x10], ebx
mov dword [esp + 0x28], edx
mov dword [esp + 0x30], 5
mov dword [esp + 0x2c], eax
jmp 0x45e8cb
mov edx, dword [esp + 0x28]
mov ebx, dword [esp + 0x10]
mov ecx, dword [esi + 0xd0]
mov eax, edx
shr eax, 1
imul eax, ecx
and edx, 1
add eax, edx
mov edx, dword [esi + 0x10]
shl eax, 3
cmp ebx, edx
jge 0x45efbd
push ecx
mov ecx, dword [esp + 0x38]
mov edi, dword [esp + 0x48]
lea edx, [eax + ecx]
mov ecx, dword [esp + 0x6c]
push edx
lea edx, [eax + ecx]
mov ecx, dword [esi + 0xb8]
add ecx, eax
push edx
push ecx
push edi
call dword [0x4e2534]
mov edx, dword [esi + 0x188]
mov ecx, dword [esp + 0x40]
mov eax, dword [esi + 0x16c]
mov ebx, dword [esi + 0x15c]
mov ebp, dword [esi + 0x154]
mov dword [esp + 0x6c], edx
mov edx, dword [ecx]
mov ecx, dword [esi + 0x158]
mov dword [esp + 0x30], eax
mov eax, dword [esi + 0x168]
push edi
mov dword [esp + 0x6c], edx
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], ebx
mov dword [esp + 0x38], ecx
add ebp, 0x100
call dword [0x4e2500]
add esp, 0x18
test ebx, ebx
je 0x45e980
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
push edx
push eax
lea eax, [edi + 0x80]
push edi
push eax
call dword [0x4e2510]
jmp 0x45e998
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
push ecx
push edx
lea eax, [edi + 0x80]
push edi
push eax
call dword [0x4e2524]
add esp, 0x10
cmp eax, 3
jge 0x45e9c9
cmp word [edi + 0x82], 0
jne 0x45e9c9
cmp word [edi + 0x90], 0
jne 0x45e9c9
cmp word [edi + 0x80], 0
jne 0x45e9c9
push 0x10
xor ebx, ebx
push 0x4712b0
jmp 0x45ea45
mov ecx, dword [esp + 0x30]
mov ebx, dword [esp + 0x14]
mov eax, 1
shl eax, cl
mov ecx, dword [esp + 0x4c]
push ecx
or ebx, eax
lea eax, [edi + 0x80]
push eax
mov dword [esp + 0x1c], ebx
call fcn.0043eca0
mov ecx, dword [esp + 0x20]
mov ebx, eax
mov eax, dword [esp + 0x58]
add esp, 8
shl ebx, 4
add ebx, ecx
mov dword [esp + 0x18], 0
test eax, eax
je 0x45ea27
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
push edx
push eax
lea eax, [edi + 0x80]
push eax
push ebp
call dword [0x4e2518]
jmp 0x45ea3f
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
push ecx
lea eax, [edi + 0x80]
push edx
push eax
push ebp
call dword [0x4e251c]
add esp, 0x10
push 0x10
push ebp
push edi
call dword [0x4e2644]
imul eax, dword [esp + 0x60]
xor edx, edx
mov ebp, dword [esp + 0x1c]
div dword [esp + 0x64]
mov edi, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
add esp, 0xc
add edi, 4
mov dword [esp + 0x2c], edi
add eax, ebx
add ebp, eax
mov eax, dword [esp + 0x28]
inc eax
dec edx
cmp eax, 4
mov dword [esp + 0x10], ebp
mov dword [esp + 0x28], eax
mov dword [esp + 0x30], edx
jb 0x45e8c3
mov eax, dword [esp + 0x38]
mov ecx, eax
and ecx, 3
sar eax, 1
add eax, dword [ecx*4 + 0x470700]
mov ecx, eax
mov eax, dword [esp + 0x3c]
mov edx, eax
and edx, 3
sar eax, 1
add eax, dword [edx*4 + 0x470700]
mov edx, eax
mov eax, dword [esp + 0x40]
mov edi, eax
and edi, 3
sar eax, 1
add eax, dword [edi*4 + 0x470700]
mov ebx, eax
mov eax, dword [esp + 0x24]
mov edi, eax
and edi, 3
sar eax, 1
mov ebp, dword [edi*4 + 0x470700]
mov edi, dword [esi + 0xd0]
add eax, ebp
mov ebp, edx
mov dword [esp + 0x24], eax
mov eax, dword [esi + 0xc4]
mov dword [esp + 0x68], eax
mov eax, ecx
sar eax, 1
shr edi, 1
mov dword [esp + 0x3c], eax
mov eax, edi
sar ebp, 1
imul eax, ebp
mov dword [esp + 0x4c], ebp
mov ebp, dword [esi + 0xb0]
and ecx, 1
and edx, 1
add eax, ebp
mov ebp, dword [esp + 0x3c]
lea ecx, [edx + ecx*2]
add eax, ebp
mov dword [esp + 0x34], ecx
sub ecx, 0
je 0x45eb76
dec ecx
je 0x45eb59
dec ecx
mov ecx, dword [esi + 0x94]
push ecx
push edi
mov edi, dword [esp + 0x70]
push eax
push edi
je 0x45eb4a
call dword [0x4e2580]
add esp, 0x10
mov dword [esp + 0x68], edi
jmp 0x45eb7a
call dword [0x4e2574]
add esp, 0x10
mov dword [esp + 0x68], edi
jmp 0x45eb7a
mov ecx, dword [esi + 0x94]
push ecx
push edi
mov edi, dword [esp + 0x70]
push eax
push edi
call dword [0x4e2578]
add esp, 0x10
mov dword [esp + 0x68], edi
jmp 0x45eb7a
mov dword [esp + 0x68], eax
mov ecx, dword [esi + 0xd0]
mov edx, dword [esp + 0x24]
mov eax, ebx
mov ebp, edx
sar eax, 1
shr ecx, 1
mov dword [esp + 0x38], eax
mov eax, ecx
sar ebp, 1
imul eax, ebp
mov edi, dword [esi + 0xc4]
mov dword [esp + 0x30], ebp
mov ebp, dword [esi + 0xf4]
and ebx, 1
and edx, 1
add eax, ebp
mov ebp, dword [esp + 0x38]
add edi, 0x10
lea edx, [edx + ebx*2]
add eax, ebp
mov dword [esp + 0x2c], edx
sub edx, 0
je 0x45ebf9
dec edx
je 0x45ebe4
dec edx
mov edx, dword [esi + 0x94]
push edx
push ecx
push eax
push edi
je 0x45ebdc
call dword [0x4e2580]
jmp 0x45ebf4
call dword [0x4e2574]
jmp 0x45ebf4
mov edx, dword [esi + 0x94]
push edx
push ecx
push eax
push edi
call dword [0x4e2578]
add esp, 0x10
mov eax, edi
mov ecx, dword [esi + 0xd0]
mov edx, dword [esp + 0x68]
mov edi, dword [esp + 0x44]
shr ecx, 1
push ecx
push eax
mov eax, dword [esi + 0xbc]
push edx
push eax
push edi
call dword [0x4e2534]
mov ecx, dword [esi + 0x188]
mov edx, dword [esi + 0x180]
mov ebp, dword [esi + 0x16c]
mov eax, dword [esi + 0x168]
mov ebx, dword [esi + 0x154]
mov dword [esp + 0x64], ecx
mov ecx, dword [esi + 0x15c]
mov dword [esp + 0x68], edx
mov edx, dword [esi + 0x158]
push edi
mov dword [esp + 0x58], ebp
mov dword [esp + 0x70], eax
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x80], edx
add ebx, 0x100
call dword [0x4e2500]
mov eax, dword [esp + 0x5c]
add esp, 0x18
test eax, eax
push ebp
je 0x45ec8d
mov eax, dword [esp + 0x6c]
push eax
lea eax, [edi + 0x80]
push edi
push eax
call dword [0x4e2510]
jmp 0x45eca0
mov ecx, dword [esp + 0x6c]
lea eax, [edi + 0x80]
push ecx
push edi
push eax
call dword [0x4e2524]
add esp, 0x10
cmp eax, 3
jge 0x45ecd1
cmp word [edi + 0x82], 0
jne 0x45ecd1
cmp word [edi + 0x90], 0
jne 0x45ecd1
cmp word [edi + 0x80], 0
jne 0x45ecd1
push 0x10
xor ebp, ebp
push 0x4712b0
jmp 0x45ed42
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x58]
or al, 2
push edx
mov dword [esp + 0x18], eax
lea eax, [edi + 0x80]
push eax
call fcn.0043eca0
mov ecx, dword [esp + 0x20]
mov ebp, eax
mov eax, dword [esp + 0x4c]
add esp, 8
shl ebp, 4
add ebp, ecx
mov dword [esp + 0x18], 0
test eax, eax
je 0x45ed24
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x68]
push eax
lea eax, [edi + 0x80]
push ecx
push eax
push ebx
call dword [0x4e2518]
jmp 0x45ed3c
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x68]
push edx
push eax
lea eax, [edi + 0x80]
push eax
push ebx
call dword [0x4e251c]
add esp, 0x10
push 0x10
push ebx
push edi
call dword [0x4e2644]
imul eax, dword [esp + 0x60]
xor edx, edx
add esp, 0xc
div dword [esp + 0x50]
mov ecx, eax
mov eax, dword [esp + 0x10]
add ecx, ebp
add eax, ecx
mov ecx, dword [esi + 0x10]
cmp eax, ecx
mov dword [esp + 0x10], eax
jge 0x45efbd
mov ecx, dword [esi + 0xd0]
mov edx, dword [esi + 0xb4]
shr ecx, 1
mov eax, ecx
mov ebp, dword [esi + 0x94]
imul eax, dword [esp + 0x4c]
mov ebx, dword [esi + 0xc4]
add eax, edx
mov edx, dword [esp + 0x3c]
add eax, edx
mov edx, dword [esp + 0x34]
sub edx, 0
je 0x45edd9
push ebp
push ecx
push eax
dec edx
push ebx
je 0x45edca
dec edx
je 0x45edbb
call dword [0x4e2580]
add esp, 0x10
mov dword [esp + 0x68], ebx
jmp 0x45eddd
call dword [0x4e2574]
add esp, 0x10
mov dword [esp + 0x68], ebx
jmp 0x45eddd
call dword [0x4e2578]
add esp, 0x10
mov dword [esp + 0x68], ebx
jmp 0x45eddd
mov dword [esp + 0x68], eax
mov ecx, dword [esi + 0xd0]
mov edx, dword [esi + 0xf8]
shr ecx, 1
mov eax, ecx
mov ebx, dword [esi + 0xc4]
imul eax, dword [esp + 0x30]
mov ebp, dword [esi + 0x94]
add eax, edx
mov edx, dword [esp + 0x38]
add ebx, 0x10
add eax, edx
mov edx, dword [esp + 0x2c]
sub edx, 0
je 0x45ee37
push ebp
push ecx
push eax
dec edx
push ebx
je 0x45ee2c
dec edx
je 0x45ee24
call dword [0x4e2580]
jmp 0x45ee32
call dword [0x4e2574]
jmp 0x45ee32
call dword [0x4e2578]
add esp, 0x10
mov eax, ebx
mov edx, dword [esi + 0xd0]
mov ecx, dword [esi + 0xc0]
shr edx, 1
push edx
push eax
mov eax, dword [esp + 0x70]
push eax
push ecx
push edi
call dword [0x4e2534]
mov edx, dword [esi + 0x188]
mov eax, dword [esi + 0x184]
mov ebx, dword [esi + 0x16c]
mov ecx, dword [esi + 0x168]
mov ebp, dword [esi + 0x154]
mov dword [esp + 0x64], edx
mov edx, dword [esi + 0x15c]
mov dword [esp + 0x68], eax
mov eax, dword [esi + 0x158]
push edi
mov dword [esp + 0x58], ebx
mov dword [esp + 0x70], ecx
mov dword [esp + 0x5c], edx
mov dword [esp + 0x80], eax
add ebp, 0x100
call dword [0x4e2500]
mov eax, dword [esp + 0x5c]
add esp, 0x18
test eax, eax
push ebx
lea eax, [edi + 0x80]
je 0x45eec7
mov ecx, dword [esp + 0x6c]
push ecx
push edi
push eax
call dword [0x4e2510]
jmp 0x45eed4
mov edx, dword [esp + 0x6c]
push edx
push edi
push eax
call dword [0x4e2524]
add esp, 0x10
cmp eax, 3
jge 0x45ef05
cmp word [edi + 0x82], 0
jne 0x45ef05
cmp word [edi + 0x90], 0
jne 0x45ef05
cmp word [edi + 0x80], 0
jne 0x45ef05
push 0x10
xor ebx, ebx
push 0x4712b0
jmp 0x45ef6f
mov eax, dword [esp + 0x58]
mov ebx, dword [esp + 0x14]
push eax
lea eax, [edi + 0x80]
or ebx, 1
push eax
mov dword [esp + 0x1c], ebx
call fcn.0043eca0
mov ecx, dword [esp + 0x20]
mov ebx, eax
mov eax, dword [esp + 0x4c]
add esp, 8
shl ebx, 4
add ebx, ecx
test eax, eax
je 0x45ef51
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x68]
push ecx
lea eax, [edi + 0x80]
push edx
push eax
push ebp
call dword [0x4e2518]
jmp 0x45ef69
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x68]
push eax
lea eax, [edi + 0x80]
push ecx
push eax
push ebp
call dword [0x4e251c]
add esp, 0x10
push 0x10
push ebp
push edi
call dword [0x4e2644]
imul eax, dword [esp + 0x60]
xor edx, edx
mov ecx, dword [esi + 0x10]
div dword [esp + 0x5c]
add esp, 0xc
mov edx, eax
mov eax, dword [esp + 0x10]
add edx, ebx
add eax, edx
cmp eax, ecx
jge 0x45efbd
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x64]
mov dword [esi + 0x10], eax
mov eax, dword [esp + 0x48]
mov dword [eax], ecx
mov ecx, dword [esp + 0x14]
mov dword [eax + 4], edx
mov eax, dword [esp + 0x6c]
mov dword [esi + 0x84], eax
mov dword [esi + 0x160], ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x4c
ret