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

Disassembly:
sub esp, 0x38
push ebx
push ebp
push esi
mov esi, dword [esp + 0x48]
mov eax, dword [esi + 0x88]
push edi
cmp eax, 5
je 0x43e830
add eax, 0xfffffffa
cmp eax, 1
ja 0x43e537
mov ecx, dword [esi + 0x7c]
mov eax, dword [esi + 0x28]
mov edi, dword [esi + 4]
mov ebx, dword [esp + 0x50]
mov dword [esp + 0x10], eax
mov eax, dword [esi + 0xc]
mov edx, 1
shl edx, cl
mov dword [esp + 0x3c], eax
add eax, edi
mov dword [esp + 0x40], eax
lea ecx, [edx - 1]
mov dword [esp + 0x34], ecx
mov ecx, dword [esi + 0x78]
mov eax, 1
shl eax, cl
mov ecx, dword [esi + 0x10]
mov ebp, ebx
sub ebp, edi
mov dword [esp + 0x18], ecx
mov ecx, ebp
sub ecx, dword [esp + 0x18]
mov dword [esp + 0x4c], edi
mov dword [esp + 0x28], ebp
cmp ecx, eax
jbe 0x43e2af
mov ecx, ebp
sub ecx, eax
jmp 0x43e2b3
mov ecx, dword [esp + 0x18]
cmp dword [esi + 0x14], 0
je 0x43e2c3
mov eax, dword [esp + 0x18]
mov dword [esp + 0x1c], eax
jmp 0x43e2c7
mov dword [esp + 0x1c], ecx
cmp ebp, edx
jbe 0x43e2d3
sub ebp, edx
mov dword [esp + 0x24], ebp
jmp 0x43e2db
mov dword [esp + 0x24], 0
mov ecx, dword [esi + 0x84]
mov ebp, dword [esi + 0x20]
mov eax, 1
shl eax, cl
mov ecx, dword [esi + 0x74]
sub ebx, edi
mov edi, dword [esi + 0x18]
mov dword [esp + 0x18], eax
mov eax, dword [esi + 0x80]
dec edx
mov dword [esp + 0x14], 3
mov dword [esp + 0x38], ecx
mov dword [esp + 0x20], eax
mov dword [esp + 0x2c], edx
cmp edi, ebx
jae 0x43e34c
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x4c]
push ecx
lea eax, [edi + edx]
call fcn.0041a330
mov edx, dword [ebp + eax*4]
mov ecx, edi
and ecx, dword [esp + 0x30]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x14]
mov dword [eax + ecx*4], edx
mov ecx, dword [esp + 0x34]
mov dword [ebp + ecx*4], edi
inc edi
add esp, 4
cmp edi, ebx
jb 0x43e316
mov edx, dword [esp + 0x20]
mov edi, dword [esp + 0x50]
push edx
mov eax, edi
mov dword [esi + 0x18], ebx
call fcn.0041a330
mov esi, dword [ebp + eax*4]
mov ebx, dword [esp + 0x58]
add esp, 4
cmp esi, dword [esp + 0x1c]
sbb eax, eax
xor ecx, ecx
inc eax
cmp ecx, dword [esp + 0x18]
sbb edx, edx
neg edx
test edx, eax
je 0x43e3e5
mov ebp, dword [esp + 0x14]
mov eax, dword [esp + 0x4c]
lea edx, [esi + eax]
mov cl, byte [edx + ebp]
cmp cl, byte [edi + ebp]
jne 0x43e3b4
mov ecx, edi
call fcn.00445ec0
cmp eax, ebp
jbe 0x43e3b4
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x58]
sub edx, esi
mov ebp, eax
add edx, 2
add eax, edi
mov dword [ecx], edx
cmp eax, ebx
je 0x43e3e1
cmp esi, dword [esp + 0x24]
jbe 0x43e3e1
and esi, dword [esp + 0x34]
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x18]
mov esi, dword [edx + esi*4]
dec eax
cmp esi, dword [esp + 0x1c]
mov dword [esp + 0x18], eax
sbb ecx, ecx
xor edx, edx
inc ecx
cmp edx, eax
sbb eax, eax
neg eax
test eax, ecx
jne 0x43e383
mov dword [esp + 0x14], ebp
mov esi, dword [esp + 0x38]
mov ecx, dword [esi + 0x28]
mov ebx, dword [esi + 0xc]
mov dword [esp + 0x34], ecx
mov ecx, dword [esi + 0x7c]
mov edx, 1
shl edx, cl
mov ecx, dword [esi + 4]
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x30], ebx
lea eax, [edx - 1]
mov dword [esp + 0x38], eax
mov eax, dword [esi]
mov dword [esp + 0x24], eax
sub eax, ecx
mov ecx, dword [esp + 0x3c]
sub ecx, eax
mov dword [esp + 0x3c], ecx
cmp eax, edx
jbe 0x43e42d
sub eax, edx
mov dword [esp + 0x1c], eax
jmp 0x43e435
mov dword [esp + 0x1c], 0
mov eax, dword [esi + 0x80]
push eax
mov eax, edi
call fcn.0041a330
mov ecx, dword [esi + 0x20]
mov esi, dword [ecx + eax*4]
add esp, 4
cmp esi, ebx
sbb edx, edx
xor eax, eax
inc edx
cmp eax, dword [esp + 0x18]
sbb ecx, ecx
neg ecx
test ecx, edx
je 0x43eafd
mov edx, dword [esp + 0x4c]
mov eax, dword [edx + esi]
mov ecx, dword [esp + 0x50]
cmp eax, dword [ecx]
jne 0x43e4f4
mov eax, dword [esp + 0x24]
mov ebx, dword [esp + 0x54]
mov edi, ecx
lea ebp, [edx + esi + 4]
mov ecx, eax
add edi, 4
sub ecx, ebp
add ecx, edi
cmp ecx, ebx
jae 0x43e497
mov ebx, eax
sub ebx, ebp
add ebx, edi
mov edx, ebp
mov ecx, edi
call fcn.00445ec0
add ebp, eax
mov dword [esp + 0x20], eax
cmp ebp, dword [esp + 0x24]
je 0x43e4ae
jmp 0x43e4c4
mov ebp, dword [esp + 0x20]
mov ebx, dword [esp + 0x54]
mov edx, dword [esp + 0x40]
lea ecx, [edi + ebp]
call fcn.00445ec0
add eax, ebp
add eax, 4
cmp eax, dword [esp + 0x14]
jbe 0x43e4f4
mov edx, dword [esp + 0x28]
sub edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x58]
sub edx, esi
add edx, 2
mov dword [ecx], edx
mov edx, dword [esp + 0x50]
mov dword [esp + 0x14], eax
add eax, edx
cmp eax, dword [esp + 0x54]
je 0x43eafd
cmp esi, dword [esp + 0x1c]
jbe 0x43eafd
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x34]
and eax, esi
mov esi, dword [ecx + eax*4]
mov eax, dword [esp + 0x18]
dec eax
cmp esi, dword [esp + 0x30]
mov dword [esp + 0x18], eax
sbb edx, edx
xor ecx, ecx
inc edx
cmp ecx, eax
sbb eax, eax
neg eax
test eax, edx
jne 0x43e463
mov eax, dword [esp + 0x14]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x38
ret
mov ecx, dword [esi + 0x28]
mov eax, dword [esi + 0xc]
mov ebp, dword [esp + 0x50]
mov dword [esp + 0x10], ecx
mov ecx, dword [esi + 0x7c]
mov edi, 1
shl edi, cl
mov ecx, dword [esi + 0x78]
mov dword [esp + 0x2c], eax
mov ebx, ebp
lea edx, [edi - 1]
mov dword [esp + 0x34], edx
mov edx, dword [esi + 4]
add eax, edx
mov dword [esp + 0x44], eax
mov eax, 1
shl eax, cl
mov ecx, dword [esi + 0x10]
sub ebx, edx
mov dword [esp + 0x1c], ecx
mov ecx, ebx
sub ecx, dword [esp + 0x1c]
mov dword [esp + 0x4c], edx
mov dword [esp + 0x20], ebx
cmp ecx, eax
jbe 0x43e590
mov ecx, ebx
sub ecx, eax
jmp 0x43e594
mov ecx, dword [esp + 0x1c]
cmp dword [esi + 0x14], 0
je 0x43e5a4
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x1c], eax
jmp 0x43e5a8
mov dword [esp + 0x1c], ecx
cmp ebx, edi
jbe 0x43e5b4
sub ebx, edi
mov dword [esp + 0x24], ebx
jmp 0x43e5bc
mov dword [esp + 0x24], 0
mov ecx, dword [esi + 0x84]
mov ebx, dword [esi + 0x20]
mov eax, 1
shl eax, cl
mov ecx, dword [esi + 0x74]
dec edi
mov dword [esp + 0x3c], edi
mov dword [esp + 0x18], eax
mov eax, dword [esi + 0x80]
mov edi, ebp
mov dword [esp + 0x28], eax
mov eax, dword [esi + 0x18]
sub edi, edx
mov dword [esp + 0x14], 3
mov dword [esp + 0x30], ecx
cmp eax, edi
jae 0x43e644
mov ebp, dword [esp + 0x10]
mov ecx, 0x20
sub ecx, dword [esp + 0x28]
mov dword [esp + 0x40], ecx
jmp 0x43e614
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x4c]
mov edx, dword [eax + edx]
imul edx, edx, 0x9e3779b1
shr edx, cl
mov ecx, eax
and ecx, dword [esp + 0x3c]
mov dword [esp + 0x38], edx
mov edx, dword [ebx + edx*4]
mov dword [ebp + ecx*4], edx
mov ecx, dword [esp + 0x38]
mov dword [ebx + ecx*4], eax
inc eax
cmp eax, edi
jb 0x43e610
mov ebp, dword [esp + 0x50]
mov dword [esi + 0x18], edi
mov eax, dword [ebp]
imul eax, eax, 0x9e3779b1
mov ecx, 0x20
sub ecx, dword [esp + 0x28]
shr eax, cl
mov esi, dword [ebx + eax*4]
cmp esi, dword [esp + 0x1c]
sbb edx, edx
xor eax, eax
inc edx
cmp eax, dword [esp + 0x18]
sbb ecx, ecx
neg ecx
test ecx, edx
je 0x43e6dc
mov edx, dword [esp + 0x4c]
mov eax, dword [esp + 0x14]
add edx, esi
mov cl, byte [edx + eax]
cmp cl, byte [eax + ebp]
jne 0x43e6af
mov ebx, dword [esp + 0x54]
mov ecx, ebp
call fcn.00445ec0
cmp eax, dword [esp + 0x14]
jbe 0x43e6af
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x58]
sub edx, esi
mov dword [esp + 0x14], eax
add edx, 2
add eax, ebp
mov dword [ecx], edx
cmp eax, ebx
je 0x43e6dc
cmp esi, dword [esp + 0x24]
jbe 0x43e6dc
and esi, dword [esp + 0x34]
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x18]
mov esi, dword [edx + esi*4]
dec eax
cmp esi, dword [esp + 0x1c]
mov dword [esp + 0x18], eax
sbb ecx, ecx
xor edx, edx
inc ecx
cmp edx, eax
sbb eax, eax
neg eax
test eax, ecx
jne 0x43e673
mov eax, dword [esp + 0x30]
mov ecx, dword [eax + 0x28]
mov edi, dword [eax + 4]
mov esi, dword [esp + 0x2c]
mov ebx, dword [eax + 0xc]
mov dword [esp + 0x38], ecx
mov ecx, dword [eax + 0x7c]
mov edx, 1
shl edx, cl
mov dword [esp + 0x34], ebx
mov dword [esp + 0x4c], edi
lea ecx, [edx - 1]
mov dword [esp + 0x3c], ecx
mov ecx, dword [eax]
mov dword [esp + 0x28], ecx
sub ecx, edi
sub esi, ecx
mov dword [esp + 0x40], esi
cmp ecx, edx
jbe 0x43e724
sub ecx, edx
mov dword [esp + 0x1c], ecx
jmp 0x43e72c
mov dword [esp + 0x1c], 0
mov edx, dword [ebp]
mov esi, dword [eax + 0x80]
imul edx, edx, 0x9e3779b1
mov eax, dword [eax + 0x20]
mov ecx, 0x20
sub ecx, esi
shr edx, cl
mov esi, dword [eax + edx*4]
cmp esi, ebx
sbb ecx, ecx
xor edx, edx
inc ecx
cmp edx, dword [esp + 0x18]
sbb eax, eax
neg eax
test eax, ecx
je 0x43eafd
jmp 0x43e767
mov edi, dword [esp + 0x4c]
mov eax, dword [edi + esi]
cmp eax, dword [ebp]
jne 0x43e7ed
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x28]
lea edi, [ecx + esi + 4]
mov ecx, dword [esp + 0x54]
lea eax, [ebp + 4]
sub eax, edi
add eax, edx
cmp eax, ecx
jb 0x43e790
mov eax, ecx
mov ebx, eax
mov edx, edi
lea ecx, [ebp + 4]
call fcn.00445ec0
add edi, eax
mov dword [esp + 0x24], eax
cmp edi, dword [esp + 0x28]
je 0x43e7aa
jmp 0x43e7c1
mov edi, dword [esp + 0x24]
mov ebx, dword [esp + 0x54]
mov edx, dword [esp + 0x44]
lea ecx, [edi + ebp + 4]
call fcn.00445ec0
add eax, edi
add eax, 4
cmp eax, dword [esp + 0x14]
jbe 0x43e7ed
mov ecx, dword [esp + 0x20]
sub ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x58]
sub ecx, esi
mov dword [esp + 0x14], eax
add ecx, 2
add eax, ebp
mov dword [edx], ecx
cmp eax, dword [esp + 0x54]
je 0x43eafd
cmp esi, dword [esp + 0x1c]
jbe 0x43eafd
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x38]
and eax, esi
mov esi, dword [ecx + eax*4]
mov eax, dword [esp + 0x18]
dec eax
cmp esi, dword [esp + 0x34]
mov dword [esp + 0x18], eax
sbb edx, edx
xor ecx, ecx
inc edx
cmp ecx, eax
sbb eax, eax
neg eax
test eax, edx
jne 0x43e763
mov eax, dword [esp + 0x14]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x38
ret
mov ecx, dword [esi + 0x28]
mov edi, dword [esi + 4]
mov ebp, dword [esp + 0x50]
mov dword [esp + 0x10], ecx
mov ecx, dword [esi + 0x7c]
mov edx, 1
shl edx, cl
mov ecx, dword [esi + 0x78]
mov ebx, ebp
sub ebx, edi
lea eax, [edx - 1]
mov dword [esp + 0x3c], eax
mov eax, dword [esi + 0xc]
mov dword [esp + 0x34], eax
add eax, edi
mov dword [esp + 0x30], eax
mov eax, 1
shl eax, cl
mov ecx, dword [esi + 0x10]
mov dword [esp + 0x1c], ecx
mov ecx, ebx
sub ecx, dword [esp + 0x1c]
mov dword [esp + 0x4c], edi
mov dword [esp + 0x2c], ebx
cmp ecx, eax
jbe 0x43e889
mov ecx, ebx
sub ecx, eax
jmp 0x43e88d
mov ecx, dword [esp + 0x1c]
cmp dword [esi + 0x14], 0
je 0x43e89d
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x20], eax
jmp 0x43e8a1
mov dword [esp + 0x20], ecx
cmp ebx, edx
jbe 0x43e8ad
sub ebx, edx
mov dword [esp + 0x24], ebx
jmp 0x43e8b5
mov dword [esp + 0x24], 0
mov ecx, dword [esi + 0x84]
mov eax, 1
shl eax, cl
mov ecx, dword [esi + 0x74]
mov ebx, ebp
sub ebx, edi
mov edi, dword [esi + 0x18]
mov dword [esp + 0x18], eax
mov eax, dword [esi + 0x20]
mov dword [esp + 0x38], ecx
mov ecx, dword [esi + 0x80]
dec edx
mov dword [esp + 0x14], 3
mov dword [esp + 0x1c], eax
mov dword [esp + 0x28], ecx
mov dword [esp + 0x44], edx
cmp edi, ebx
jae 0x43e931
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x4c]
push edx
add eax, edi
call fcn.0041a300
mov edx, dword [esp + 0x20]
mov dword [esp + 0x44], eax
mov eax, dword [edx + eax*4]
mov edx, dword [esp + 0x14]
mov ecx, edi
and ecx, dword [esp + 0x48]
add esp, 4
mov dword [edx + ecx*4], eax
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x40]
mov dword [eax + ecx*4], edi
inc edi
cmp edi, ebx
jb 0x43e8f6
mov edx, dword [esp + 0x28]
push edx
mov eax, ebp
mov dword [esi + 0x18], ebx
call fcn.0041a300
mov ecx, dword [esp + 0x20]
mov esi, dword [ecx + eax*4]
mov ebx, dword [esp + 0x58]
add esp, 4
cmp esi, dword [esp + 0x20]
sbb edx, edx
xor eax, eax
inc edx
cmp eax, dword [esp + 0x18]
sbb ecx, ecx
neg ecx
test ecx, edx
je 0x43e9c8
mov edi, dword [esp + 0x14]
mov edx, dword [esp + 0x4c]
add edx, esi
mov al, byte [edx + edi]
cmp al, byte [edi + ebp]
jne 0x43e997
mov ecx, ebp
call fcn.00445ec0
cmp eax, edi
jbe 0x43e997
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x58]
sub ecx, esi
mov edi, eax
add ecx, 2
add eax, ebp
mov dword [edx], ecx
cmp eax, ebx
je 0x43e9c4
cmp esi, dword [esp + 0x24]
jbe 0x43e9c4
and esi, dword [esp + 0x3c]
mov eax, dword [esp + 0x10]
mov esi, dword [eax + esi*4]
mov eax, dword [esp + 0x18]
dec eax
cmp esi, dword [esp + 0x20]
mov dword [esp + 0x18], eax
sbb ecx, ecx
xor edx, edx
inc ecx
cmp edx, eax
sbb eax, eax
neg eax
test eax, ecx
jne 0x43e967
mov dword [esp + 0x14], edi
mov esi, dword [esp + 0x38]
mov ecx, dword [esi + 0x28]
mov edi, dword [esi + 0xc]
mov dword [esp + 0x3c], ecx
mov ecx, dword [esi + 0x7c]
mov edx, 1
shl edx, cl
mov ecx, dword [esi + 4]
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x38], edi
lea eax, [edx - 1]
mov dword [esp + 0x40], eax
mov eax, dword [esi]
mov dword [esp + 0x28], eax
sub eax, ecx
mov ecx, dword [esp + 0x34]
sub ecx, eax
mov dword [esp + 0x44], ecx
cmp eax, edx
jbe 0x43ea10
sub eax, edx
mov dword [esp + 0x20], eax
jmp 0x43ea18
mov dword [esp + 0x20], 0
mov eax, dword [esi + 0x80]
push eax
mov eax, ebp
call fcn.0041a300
mov ecx, dword [esi + 0x20]
mov esi, dword [ecx + eax*4]
add esp, 4
cmp esi, edi
sbb edx, edx
xor eax, eax
inc edx
cmp eax, dword [esp + 0x18]
sbb ecx, ecx
neg ecx
test ecx, edx
je 0x43eafd
mov edx, dword [esp + 0x4c]
mov eax, dword [edx + esi]
cmp eax, dword [ebp]
jne 0x43eaca
mov ecx, dword [esp + 0x28]
mov eax, edx
lea edi, [eax + esi + 4]
lea eax, [ebp + 4]
sub eax, edi
add eax, ecx
mov ecx, dword [esp + 0x54]
cmp eax, ecx
jb 0x43ea71
mov eax, ecx
mov ebx, eax
mov edx, edi
lea ecx, [ebp + 4]
call fcn.00445ec0
add edi, eax
mov dword [esp + 0x24], eax
cmp edi, dword [esp + 0x28]
je 0x43ea8b
jmp 0x43eaa2
mov edi, dword [esp + 0x24]
mov ebx, dword [esp + 0x54]
mov edx, dword [esp + 0x30]
lea ecx, [edi + ebp + 4]
call fcn.00445ec0
add eax, edi
add eax, 4
cmp eax, dword [esp + 0x14]
jbe 0x43eaca
mov edx, dword [esp + 0x2c]
sub edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x58]
sub edx, esi
mov dword [esp + 0x14], eax
add edx, 2
add eax, ebp
mov dword [ecx], edx
cmp eax, dword [esp + 0x54]
je 0x43eafd
cmp esi, dword [esp + 0x20]
jbe 0x43eafd
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x3c]
and edx, esi
mov esi, dword [eax + edx*4]
mov eax, dword [esp + 0x18]
dec eax
cmp esi, dword [esp + 0x38]
mov dword [esp + 0x18], eax
sbb ecx, ecx
xor edx, edx
inc ecx
cmp edx, eax
sbb eax, eax
neg eax
test eax, ecx
jne 0x43ea46
mov eax, dword [esp + 0x14]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x38
ret