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

Disassembly:
sub esp, 0x168
push ebx
mov ebx, dword [esp + 0x178]
mov eax, dword [ebx + 0x510]
push ebp
mov ebp, dword [ebx + 0x504]
push esi
mov esi, dword [esp + 0x17c]
mov ecx, dword [esi + 0x40]
mov edx, dword [ecx + 4]
mov dword [esp + 0xc], eax
mov eax, dword [edx + 0x1c]
mov edx, dword [esp + 0x184]
mov dword [esp + 0x28], eax
mov eax, dword [eax + 0xb20]
mov dword [esp + 0x2c], eax
test edx, edx
je 0x4223b7
push edi
xor edi, edi
test ebp, ebp
jle 0x421f18
jmp 0x421ec0
mov eax, dword [esp + 0x10]
mov esi, dword [edx + edi*4]
mov eax, dword [eax + 0x340]
mov ecx, esi
dec eax
and ecx, 0x7fff
cmp eax, 3
ja case.default.0x421edb
jmp dword [eax*4 + 0x4223f4]
sar ecx, 2
jmp case.default.0x421edb
sar ecx, 3
jmp case.default.0x421edb
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov edx, dword [esp + 0x188]
jmp case.default.0x421edb
sar ecx, 4
and esi, 0x8000
or esi, ecx
mov dword [edx + edi*4], esi
inc edi
cmp edi, ebp
jl 0x421ec0
cmp ebp, 2
mov eax, dword [edx]
mov ecx, dword [edx + 4]
mov dword [esp + 0x74], eax
mov dword [esp + 0x78], ecx
jle 0x422062
mov ecx, dword [esp + 0x10]
add ecx, 0x34c
mov dword [esp + 0x14], ecx
lea eax, [edx + 8]
lea ecx, [esp + 0x74]
sub ecx, edx
mov dword [esp + 0x24], eax
lea eax, [ebx + 0x30c]
add ebp, 0xfffffffe
mov dword [esp + 0x1c], eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x20], ebp
jmp 0x421f64
mov eax, dword [esp + 0x1c]
mov ebp, dword [eax + 0xfc]
mov ebx, dword [eax]
mov eax, dword [esp + 0x188]
mov esi, dword [eax + ebp*4]
mov ecx, dword [eax + ebx*4]
mov edx, dword [esp + 0x10]
mov edi, dword [edx + ebp*4 + 0x344]
and esi, 0x7fff
and ecx, 0x7fff
sub ecx, esi
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x14]
mov edx, dword [edx]
sub edx, edi
imul eax, edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + ebx*4 + 0x344]
sub edx, edi
mov edi, edx
cdq
idiv edi
test ecx, ecx
jge 0x421fc0
mov ecx, esi
sub ecx, eax
jmp 0x421fc3
lea ecx, [eax + esi]
mov edi, dword [esp + 0x24]
mov eax, dword [edi]
test eax, 0x8000
jne 0x42202a
cmp ecx, eax
je 0x42202a
mov edx, dword [esp + 0x184]
mov edx, dword [edx + 0x50c]
sub edx, ecx
cmp edx, ecx
jl 0x421fe9
mov edx, ecx
sub eax, ecx
jns 0x422006
mov ecx, edx
neg ecx
cmp eax, ecx
jge 0x421ffc
sub edx, eax
dec edx
mov eax, edx
jmp 0x422010
lea edx, [eax + eax]
or eax, 0xffffffff
sub eax, edx
jmp 0x422010
cmp eax, edx
jl 0x42200e
add eax, edx
jmp 0x422010
add eax, eax
mov ecx, dword [esp + 0x18]
mov dword [ecx + edi], eax
mov eax, dword [esp + 0x188]
mov dword [eax + ebp*4], esi
and dword [eax + ebx*4], 0x7fff
jmp 0x42203d
mov edx, dword [esp + 0x18]
or ecx, 0x8000
mov dword [edi], ecx
mov dword [edx + edi], 0
mov eax, 4
add dword [esp + 0x1c], eax
add dword [esp + 0x14], eax
add edi, eax
sub dword [esp + 0x20], 1
mov dword [esp + 0x24], edi
jne 0x421f60
mov ebx, dword [esp + 0x184]
mov esi, dword [esp + 0x17c]
push 1
push 1
push esi
call fcn.00445950
mov eax, dword [ebx + 0x50c]
inc dword [ebx + 0x51c]
lea edx, [eax - 1]
mov eax, edx
add esp, 0xc
xor ecx, ecx
test eax, eax
je 0x422095
lea ecx, [ecx]
inc ecx
shr eax, 1
jne 0x422090
lea eax, [ecx + ecx]
add dword [ebx + 0x518], eax
xor eax, eax
test edx, edx
je 0x4220a9
inc eax
shr edx, 1
jne 0x4220a4
mov ecx, dword [esp + 0x74]
push eax
push ecx
push esi
call fcn.00445950
mov eax, dword [ebx + 0x50c]
add esp, 0xc
sub eax, 1
mov ecx, 0
je 0x4220cd
inc ecx
shr eax, 1
jne 0x4220c8
mov edx, dword [esp + 0x78]
push ecx
push edx
push esi
call fcn.00445950
mov eax, dword [esp + 0x1c]
add esp, 0xc
cmp dword [eax], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x14], 2
jle 0x4222b9
add eax, 4
mov dword [esp + 0x28], eax
mov ebx, dword [eax]
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + ebx*4 + 0x80]
mov ebp, dword [eax + ebx*4 + 0xc0]
xor edx, edx
mov dword [esp + 0x1c], ecx
mov ecx, ebp
mov esi, 1
shl esi, cl
xor ecx, ecx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x34], edx
mov dword [esp + 0x38], edx
mov dword [esp + 0x3c], edx
mov dword [esp + 0x40], edx
mov dword [esp + 0x44], edx
mov dword [esp + 0x48], edx
mov dword [esp + 0x4c], edx
mov dword [esp + 0x50], edx
mov dword [esp + 0x18], edx
cmp ebp, edx
je 0x42221d
xor eax, eax
cmp esi, edx
jle 0x422195
lea edx, [ebx + 0xa]
shl edx, 5
add edx, dword [esp + 0x10]
mov edi, dword [edx]
test edi, edi
jge 0x422175
mov dword [esp + eax*4 + 0x54], 1
jmp 0x42218b
mov ebx, dword [esp + 0x2c]
mov edi, dword [ebx + edi*4 + 0x720]
mov edi, dword [edi + 4]
mov ebx, dword [esp + 0x20]
mov dword [esp + eax*4 + 0x54], edi
inc eax
add edx, 4
cmp eax, esi
jl 0x422165
xor edx, edx
cmp dword [esp + 0x1c], 0
jle 0x4221db
mov edi, dword [esp + 0x14]
lea edi, [esp + edi*4 + 0x74]
xor eax, eax
test esi, esi
jle 0x4221c1
mov ebx, dword [edi]
lea esp, [esp]
cmp ebx, dword [esp + eax*4 + 0x54]
jl 0x4221bd
inc eax
cmp eax, esi
jl 0x4221b0
jmp 0x4221c1
mov dword [esp + edx*4 + 0x34], eax
mov eax, dword [esp + edx*4 + 0x34]
shl eax, cl
inc edx
add ecx, ebp
add edi, 4
or dword [esp + 0x18], eax
cmp edx, dword [esp + 0x1c]
jl 0x4221a4
mov ebx, dword [esp + 0x20]
mov ecx, dword [esp + 0x17c]
mov eax, dword [esp + 0x10]
mov eax, dword [eax + ebx*4 + 0x100]
mov edx, dword [esp + 0x18]
push ecx
lea ecx, [eax*8]
push edx
mov edx, dword [esp + 0x38]
sub ecx, eax
lea eax, [edx + ecx*8]
push eax
call fcn.0041d9f0
mov ebp, dword [esp + 0x190]
add dword [ebp + 0x514], eax
add esp, 0xc
xor edx, edx
jmp 0x422224
mov ebp, dword [esp + 0x184]
xor esi, esi
cmp dword [esp + 0x1c], edx
jle 0x42228f
mov edi, dword [esp + 0x14]
lea ecx, [ebx*8 + 0x50]
mov dword [esp + 0x20], ecx
lea edi, [esp + edi*4 + 0x74]
nop
mov eax, dword [esp + esi*4 + 0x34]
add eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + eax*4]
cmp eax, edx
jl 0x422285
mov ecx, dword [edi]
lea ebx, [eax*8]
sub ebx, eax
mov eax, dword [esp + 0x30]
cmp ecx, dword [eax + ebx*8 + 4]
lea eax, [eax + ebx*8]
jge 0x422285
mov edx, dword [esp + 0x17c]
push edx
push ecx
push eax
call fcn.0041d9f0
add dword [ebp + 0x518], eax
add esp, 0xc
xor edx, edx
inc esi
add edi, 4
cmp esi, dword [esp + 0x1c]
jl 0x422240
mov eax, dword [esp + 0x1c]
add dword [esp + 0x14], eax
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x10]
inc ecx
add eax, 4
cmp ecx, dword [edx]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], eax
jl 0x422100
mov eax, edx
mov ecx, dword [eax + 0x340]
mov eax, dword [esp + 0x188]
imul ecx, dword [eax]
mov edx, dword [esp + 0x180]
mov eax, dword [edx + 0x1c]
mov edx, dword [esp + 0x2c]
mov eax, dword [edx + eax*4]
cdq
sub eax, edx
mov ebx, eax
mov eax, dword [esp + 0x184]
mov edx, 1
xor edi, edi
xor ebp, ebp
sar ebx, 1
cmp dword [eax + 0x504], edx
mov dword [esp + 0x14], edx
jle 0x422377
add eax, 0x108
mov dword [esp + 0x18], eax
jmp 0x422310
mov eax, dword [esp + 0x18]
mov edx, dword [eax]
mov eax, dword [esp + 0x188]
mov esi, dword [eax + edx*4]
mov eax, esi
and eax, 0x7fff
cmp eax, esi
jne 0x42235a
mov edi, dword [esp + 0x10]
mov esi, dword [edi + 0x340]
mov edi, dword [edi + edx*4 + 0x344]
imul esi, eax
mov edx, dword [esp + 0x18c]
push edx
push ecx
push ebp
push ebx
mov eax, esi
mov ecx, edi
call fcn.00421010
add esp, 0x10
mov ebp, edi
mov ecx, esi
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x184]
add dword [esp + 0x18], 4
inc eax
cmp eax, dword [edx + 0x504]
mov dword [esp + 0x14], eax
jl 0x422310
mov esi, dword [esp + 0x180]
mov eax, dword [esi + 0x24]
cdq
sub eax, edx
sar eax, 1
cmp edi, eax
jge 0x4223a7
lea ebx, [ebx]
mov eax, dword [esp + 0x18c]
mov dword [eax + edi*4], ecx
mov eax, dword [esi + 0x24]
cdq
sub eax, edx
inc edi
sar eax, 1
cmp edi, eax
jl 0x422390
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x168
ret
mov ecx, dword [esp + 0x178]
push 1
push 0
push ecx
call fcn.00445950
mov eax, dword [esi + 0x24]
cdq
sub eax, edx
mov edx, dword [esp + 0x194]
sar eax, 1
add eax, eax
add eax, eax
push eax
push 0
push edx
call fcn.00428920
add esp, 0x18
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x168
ret