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

Disassembly:
sub esp, 0x50
mov edx, dword [eax + 0x80]
push ebx
mov ebx, dword [eax + 4]
push ebp
push esi
mov esi, ecx
mov ecx, dword [eax + 0x20]
mov ebp, dword [eax + 8]
mov dword [esp + 0x20], ecx
mov ecx, dword [eax + 0x8c]
mov dword [esp + 0x10], edx
xor edx, edx
test ecx, ecx
sete dl
push edi
mov edi, 1
mov dword [esp + 0x18], ebx
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x1c], esi
add edx, ecx
mov ecx, dword [eax + 0x78]
mov dword [esp + 0x4c], edx
mov edx, esi
shl edi, cl
mov ecx, dword [eax + 0x10]
sub edx, ebx
add edx, dword [esp + 0x6c]
mov dword [esp + 0x34], ecx
mov ecx, edx
sub ecx, dword [esp + 0x34]
cmp ecx, edi
jbe 0x43d3b6
sub edx, edi
jmp 0x43d3ba
mov edx, dword [esp + 0x34]
mov ecx, dword [eax + 0x14]
mov dword [esp + 0x44], ecx
test ecx, ecx
je 0x43d3c9
mov edx, dword [esp + 0x34]
lea ecx, [edx + ebp]
mov dword [esp + 0x54], ecx
mov ecx, dword [eax + 0xc]
mov dword [esp + 0x30], edx
mov dword [esp + 0x38], ecx
cmp ecx, edx
jae 0x43d3e7
mov ecx, edx
mov dword [esp + 0x28], edx
jmp 0x43d3eb
mov dword [esp + 0x28], ecx
lea edi, [ecx + ebx]
mov dword [esp + 0x34], edi
lea edi, [ecx + ebp]
mov dword [esp + 0x40], edi
mov edi, dword [esp + 0x6c]
add edi, esi
lea ebp, [edi - 8]
mov dword [esp + 0x5c], ebp
mov ebp, dword [esp + 0x68]
mov ebp, dword [ebp]
mov dword [esp + 0x20], ebp
mov ebp, dword [esp + 0x68]
mov ebp, dword [ebp + 4]
mov dword [esp + 0x10], edi
mov dword [esp + 0x2c], ebp
cmp ecx, edx
jne 0x43dab7
mov ebp, dword [eax + 0x8c]
mov edx, dword [eax + 0x80]
xor ecx, ecx
test ebp, ebp
sete cl
mov dword [esp + 0x14], edx
mov dword [esp + 0x1c], esi
lea edx, [ecx + ebp + 1]
mov ecx, dword [eax + 0x78]
mov eax, dword [esp + 0x38]
mov dword [esp + 0x5c], edx
mov edx, esi
sub edx, ebx
add edx, dword [esp + 0x6c]
mov ebp, 1
shl ebp, cl
mov ecx, edx
sub ecx, eax
cmp ecx, ebp
jbe 0x43d46d
sub edx, ebp
jmp 0x43d46f
mov edx, eax
cmp dword [esp + 0x44], 0
je 0x43d47c
mov dword [esp + 0x40], eax
jmp 0x43d482
mov eax, edx
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x2c]
add eax, ebx
add edi, 0xfffffff8
mov dword [esp + 0x20], edx
xor edx, edx
cmp esi, eax
sete dl
mov dword [esp + 0x54], eax
mov dword [esp + 0x6c], edi
mov dword [esp + 0x28], ecx
mov dword [esp + 0x30], 0
add esi, edx
mov edx, dword [esp + 0x38]
mov eax, esi
sub eax, ebx
mov ebx, eax
sub ebx, edx
lea edi, [esi + 1]
mov dword [esp + 0x34], edi
cmp ebx, ebp
jbe 0x43d4cd
mov ebx, eax
sub ebx, ebp
jmp 0x43d4cf
mov ebx, edx
xor ebp, ebp
cmp dword [esp + 0x44], ebp
jne 0x43d4d9
mov edx, ebx
sub eax, edx
cmp ecx, eax
jbe 0x43d4e7
mov dword [esp + 0x30], ecx
mov dword [esp + 0x28], ebp
mov ecx, dword [esp + 0x20]
cmp ecx, eax
jbe 0x43d4f7
mov dword [esp + 0x30], ecx
mov dword [esp + 0x20], ebp
cmp edi, dword [esp + 0x6c]
jae 0x43da86
mov eax, dword [esp + 0x70]
add eax, 0xfffffffb
mov dword [esp + 0x6c], eax
lea esp, [esp]
mov eax, dword [esp + 0x6c]
lea ecx, [esi + 2]
mov dword [esp + 0x44], ecx
cmp eax, 3
ja case.default.0x43d520
jmp dword [eax*4 + 0x43e1e0]
mov ebx, dword [esp + 0x14]
push ebx
mov eax, esi
call fcn.00429a50
add esp, 4
mov ebp, eax
jmp 0x43d58c
mov ebx, dword [esp + 0x14]
push ebx
mov eax, esi
call fcn.00439da0
add esp, 4
mov ebp, eax
jmp 0x43d58c
mov ebx, dword [esp + 0x14]
push ebx
mov eax, esi
call fcn.0040d070
add esp, 4
mov ebp, eax
jmp 0x43d58c
mov ebx, dword [esp + 0x14]
push ebx
mov eax, esi
call fcn.0040d0a0
add esp, 4
mov ebp, eax
mov dword [esp + 0x2c], eax
jmp 0x43d590
mov ebp, dword [esi]
mov ebx, dword [esp + 0x14]
imul ebp, ebp, 0x9e3779b1
mov ecx, 0x20
sub ecx, ebx
shr ebp, cl
mov dword [esp + 0x2c], ebp
mov eax, dword [esp + 0x6c]
mov edx, dword [esi]
mov dword [esp + 0x3c], edx
cmp eax, 3
ja case.default.0x43d59f
jmp dword [eax*4 + 0x43e1f0]
push ebx
mov eax, edi
call fcn.00429a50
add esp, 4
jmp 0x43d5eb
push ebx
mov eax, edi
call fcn.00439da0
add esp, 4
jmp 0x43d5eb
push ebx
mov eax, edi
call fcn.0040d070
add esp, 4
jmp 0x43d5eb
push ebx
mov eax, edi
call fcn.0040d0a0
add esp, 4
jmp 0x43d5eb
mov eax, dword [edi]
imul eax, eax, 0x9e3779b1
mov ecx, 0x20
sub ecx, ebx
shr eax, cl
mov ecx, dword [edi]
mov edx, dword [esp + 0x24]
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x4c], ecx
mov ecx, dword [edx + ebp*4]
mov ebp, dword [edx + eax*4]
mov edx, dword [esp + 0x44]
sub edx, dword [esp + 0x20]
mov dword [esp + 0x38], ebp
add ebp, ebx
mov dword [esp + 0x50], ebp
mov ebp, dword [esp + 0x2c]
mov edi, esi
sub edi, ebx
mov dword [esp + 0x48], ecx
add ecx, ebx
mov ebx, dword [esp + 0x24]
mov dword [ebx + ebp*4], edi
mov dword [esp + 0x58], edi
mov edi, dword [esp + 0x34]
mov ebp, edi
sub ebp, dword [esp + 0x18]
mov dword [ebx + eax*4], ebp
mov eax, dword [edx]
mov ebp, dword [esp + 0x44]
xor ebx, ebx
cmp eax, dword [ebp]
sete bl
xor eax, eax
cmp eax, dword [esp + 0x20]
sbb eax, eax
neg eax
test eax, ebx
je 0x43d67c
mov cl, byte [ebp - 1]
xor eax, eax
cmp cl, byte [edx - 1]
mov dword [esp + 0x44], 0
sete al
mov edi, eax
sub ebp, edi
sub edx, edi
mov esi, ebp
mov ebp, dword [esp + 0x1c]
mov ecx, edx
add edi, 4
jmp 0x43d6fc
mov eax, dword [esp + 0x40]
cmp dword [esp + 0x48], eax
jbe 0x43d68e
mov edx, dword [esp + 0x3c]
cmp dword [ecx], edx
je 0x43d6aa
cmp dword [esp + 0x38], eax
jbe 0x43da62
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x50]
cmp dword [ecx], eax
jne 0x43da62
mov esi, edi
mov edx, dword [esp + 0x20]
mov ebp, dword [esp + 0x1c]
mov eax, esi
sub eax, ecx
mov dword [esp + 0x20], eax
add eax, 2
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x54]
cmp eax, ecx
mov dword [esp + 0x28], edx
sbb edx, edx
neg edx
cmp ebp, esi
sbb ebx, ebx
neg ebx
mov edi, 4
test ebx, edx
je 0x43d6fc
mov edi, edi
movzx edx, byte [esi - 1]
cmp dl, byte [ecx - 1]
jne 0x43d6fc
dec ecx
dec esi
inc edi
cmp eax, ecx
sbb edx, edx
neg edx
cmp ebp, esi
sbb ebx, ebx
neg ebx
test ebx, edx
jne 0x43d6e0
mov ebx, dword [esp + 0x10]
lea edx, [edi + ecx]
lea ecx, [edi + esi]
call fcn.00438be0
add edi, eax
mov eax, esi
sub eax, ebp
mov dword [esp + 0x2c], eax
add eax, ebp
mov ebp, dword [esp + 0x64]
lea ecx, [ebx - 0x20]
cmp eax, ecx
ja 0x43d7c7
mov ecx, dword [esp + 0x1c]
mov edx, dword [ecx]
mov eax, dword [ebp + 0xc]
mov dword [eax], edx
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov edx, dword [ecx + 8]
mov dword [eax + 8], edx
mov edx, dword [ecx + 0xc]
mov dword [eax + 0xc], edx
mov edx, dword [esp + 0x2c]
cmp edx, 0x10
jbe 0x43d7de
mov eax, dword [ebp + 0xc]
add eax, 0x10
add edx, 0xfffffff0
add ecx, 0x10
cmp edx, 0x10
lea ebx, [eax + edx]
mov dword [esp + 0x50], ebx
mov ebx, dword [ecx]
mov dword [eax], ebx
mov ebx, dword [ecx + 4]
mov dword [eax + 4], ebx
mov ebx, dword [ecx + 8]
mov dword [eax + 8], ebx
mov ebx, dword [ecx + 0xc]
mov dword [eax + 0xc], ebx
jle 0x43d7da
mov edx, dword [esp + 0x50]
add eax, 0x10
add ecx, 0x10
mov ebx, dword [ecx]
mov dword [eax], ebx
mov ebx, dword [ecx + 4]
mov dword [eax + 4], ebx
mov ebx, dword [ecx + 8]
mov dword [eax + 8], ebx
mov ebx, dword [ecx + 0xc]
mov dword [eax + 0xc], ebx
mov ebx, dword [ecx + 0x10]
add ecx, 0x10
add eax, 0x10
mov dword [eax], ebx
mov ebx, dword [ecx + 4]
mov dword [eax + 4], ebx
mov ebx, dword [ecx + 8]
mov dword [eax + 8], ebx
mov ebx, dword [ecx + 0xc]
mov dword [eax + 0xc], ebx
add eax, 0x10
add ecx, 0x10
cmp eax, edx
jb 0x43d788
jmp 0x43d7da
mov edx, dword [esp + 0x1c]
push eax
mov eax, dword [ebp + 0xc]
add ebx, 0xffffffe0
call fcn.00438b50
add esp, 4
mov edx, dword [esp + 0x2c]
add dword [ebp + 0xc], edx
cmp edx, 0xffff
jbe 0x43d7fc
mov eax, dword [ebp + 4]
sub eax, dword [ebp]
mov dword [ebp + 0x24], 1
sar eax, 3
mov dword [ebp + 0x28], eax
mov ecx, dword [ebp + 4]
mov word [ecx + 4], dx
mov edx, dword [esp + 0x44]
mov eax, dword [ebp + 4]
inc edx
mov dword [eax], edx
lea eax, [edi - 3]
cmp eax, 0xffff
jbe 0x43d82a
mov ecx, dword [ebp + 4]
sub ecx, dword [ebp]
mov dword [ebp + 0x24], 2
sar ecx, 3
mov dword [ebp + 0x28], ecx
mov edx, dword [ebp + 4]
mov word [edx + 6], ax
mov eax, dword [esp + 0x10]
add dword [ebp + 4], 8
add esi, edi
add eax, 0xfffffff8
mov dword [esp + 0x1c], esi
cmp esi, eax
ja 0x43da5d
mov ecx, dword [esp + 0x6c]
mov ebx, dword [esp + 0x58]
mov eax, dword [esp + 0x18]
lea eax, [ebx + eax + 2]
cmp ecx, 3
ja case.default.0x43d85f
jmp dword [ecx*4 + 0x43e200]
mov edi, dword [esp + 0x14]
push edi
call fcn.00429a50
add esp, 4
jmp 0x43d8b7
mov edi, dword [esp + 0x14]
push edi
call fcn.00439da0
add esp, 4
jmp 0x43d8b7
mov edi, dword [esp + 0x14]
push edi
call fcn.0040d070
add esp, 4
jmp 0x43d8b7
mov edi, dword [esp + 0x14]
push edi
call fcn.0040d0a0
add esp, 4
jmp 0x43d8b7
mov eax, dword [eax]
mov edi, dword [esp + 0x14]
imul eax, eax, 0x9e3779b1
mov ecx, 0x20
sub ecx, edi
shr eax, cl
lea ecx, [ebx + 2]
mov ebx, dword [esp + 0x24]
mov dword [ebx + eax*4], ecx
mov ecx, dword [esp + 0x6c]
lea eax, [esi - 2]
cmp ecx, 3
ja case.default.0x43d8cd
jmp dword [ecx*4 + 0x43e210]
push edi
call fcn.00429a50
add esp, 4
jmp 0x43d911
push edi
call fcn.00439da0
add esp, 4
jmp 0x43d911
push edi
call fcn.0040d070
add esp, 4
jmp 0x43d911
push edi
call fcn.0040d0a0
add esp, 4
jmp 0x43d911
mov eax, dword [eax]
imul eax, eax, 0x9e3779b1
mov ecx, 0x20
sub ecx, edi
shr eax, cl
mov edx, esi
sub edx, dword [esp + 0x18]
sub edx, 2
cmp dword [esp + 0x28], 0
mov dword [ebx + eax*4], edx
jbe 0x43da5d
mov ecx, dword [esi]
mov eax, esi
sub eax, dword [esp + 0x28]
cmp ecx, dword [eax]
jne 0x43da5d
mov ebx, dword [esp + 0x10]
lea edx, [eax + 4]
lea ecx, [esi + 4]
call fcn.00438be0
mov edx, dword [esp + 0x20]
mov edi, eax
mov eax, dword [esp + 0x28]
add edi, 4
cmp dword [esp + 0x6c], 3
mov dword [esp + 0x28], edx
mov dword [esp + 0x20], eax
ja case.default.0x43d967
mov eax, dword [esp + 0x6c]
jmp dword [eax*4 + 0x43e220]
mov ecx, dword [esp + 0x14]
push ecx
mov eax, esi
call fcn.00429a50
add esp, 4
jmp 0x43d9c5
mov edx, dword [esp + 0x14]
push edx
mov eax, esi
call fcn.00439da0
add esp, 4
jmp 0x43d9c5
mov eax, dword [esp + 0x14]
push eax
mov eax, esi
call fcn.0040d070
add esp, 4
jmp 0x43d9c5
mov ecx, dword [esp + 0x14]
push ecx
mov eax, esi
call fcn.0040d0a0
add esp, 4
jmp 0x43d9c5
mov eax, dword [esi]
imul eax, eax, 0x9e3779b1
mov ecx, 0x20
sub ecx, dword [esp + 0x14]
shr eax, cl
mov ecx, dword [esp + 0x24]
mov edx, esi
sub edx, dword [esp + 0x18]
add esi, edi
mov dword [ecx + eax*4], edx
mov eax, dword [esp + 0x1c]
mov ecx, ebx
add ecx, 0xffffffe0
add edi, 0xfffffffd
cmp eax, ecx
ja 0x43d9ff
mov edx, dword [eax]
mov ecx, dword [ebp + 0xc]
mov dword [ecx], edx
mov edx, dword [eax + 4]
mov dword [ecx + 4], edx
mov edx, dword [eax + 8]
mov dword [ecx + 8], edx
mov eax, dword [eax + 0xc]
mov dword [ecx + 0xc], eax
jmp 0x43da12
mov edx, dword [esp + 0x1c]
mov eax, dword [ebp + 0xc]
push edx
add ebx, 0xffffffe0
call fcn.00438b50
add esp, 4
mov ecx, dword [ebp + 4]
xor edx, edx
mov word [ecx + 4], dx
mov eax, dword [ebp + 4]
mov dword [eax], 1
cmp edi, 0xffff
jbe 0x43da3f
mov ecx, dword [ebp + 4]
sub ecx, dword [ebp]
mov dword [ebp + 0x24], 2
sar ecx, 3
mov dword [ebp + 0x28], ecx
mov edx, dword [ebp + 4]
mov eax, dword [esp + 0x10]
mov word [edx + 6], di
add dword [ebp + 4], 8
add eax, 0xfffffff8
mov dword [esp + 0x1c], esi
cmp esi, eax
jbe 0x43d928
lea edi, [esi + 1]
jmp 0x43da73
mov eax, esi
sub eax, dword [esp + 0x1c]
shr eax, 7
add eax, dword [esp + 0x5c]
add esi, eax
add edi, eax
mov eax, dword [esp + 0x10]
add eax, 0xfffffff8
mov dword [esp + 0x34], edi
cmp edi, eax
jb 0x43d510
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x43da92
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x68]
mov dword [ecx], eax
mov eax, dword [esp + 0x28]
test eax, eax
jne 0x43daa4
mov eax, dword [esp + 0x30]
pop edi
pop esi
mov dword [ecx + 4], eax
mov eax, dword [esp + 8]
sub eax, dword [esp + 0x14]
pop ebp
pop ebx
add esp, 0x50
ret
cmp esi, dword [esp + 0x5c]
jae 0x43e1bd
mov eax, dword [esp + 0x70]
add eax, 0xfffffffb
mov dword [esp + 0x6c], eax
lea esp, [esp]
mov eax, dword [esp + 0x6c]
cmp eax, 3
ja case.default.0x43dad9
jmp dword [eax*4 + 0x43e230]
mov ecx, dword [esp + 0x14]
push ecx
mov eax, esi
call fcn.00429a50
add esp, 4
jmp 0x43db37
mov edx, dword [esp + 0x14]
push edx
mov eax, esi
call fcn.00439da0
add esp, 4
jmp 0x43db37
mov eax, dword [esp + 0x14]
push eax
mov eax, esi
call fcn.0040d070
add esp, 4
jmp 0x43db37
mov ecx, dword [esp + 0x14]
push ecx
mov eax, esi
call fcn.0040d0a0
add esp, 4
jmp 0x43db37
mov eax, dword [esi]
imul eax, eax, 0x9e3779b1
mov ecx, 0x20
sub ecx, dword [esp + 0x14]
shr eax, cl
mov edx, dword [esp + 0x24]
mov ebx, dword [edx + eax*4]
mov ebp, dword [esp + 0x28]
mov edi, dword [esp + 0x3c]
cmp ebx, ebp
jb 0x43db4e
mov edi, dword [esp + 0x18]
mov edx, esi
sub edx, dword [esp + 0x18]
add edi, ebx
mov ecx, edx
sub ecx, dword [esp + 0x20]
mov dword [esp + 0x50], edx
inc ecx
cmp ecx, ebp
mov ebp, dword [esp + 0x3c]
jb 0x43db6d
mov ebp, dword [esp + 0x18]
mov dword [esp + 0x44], ebp
mov ebp, dword [esp + 0x24]
mov dword [ebp + eax*4], edx
mov eax, dword [esp + 0x28]
sub eax, ecx
dec eax
cmp eax, 3
sbb eax, eax
inc eax
cmp dword [esp + 0x30], ecx
sbb ebp, ebp
neg ebp
test ebp, eax
je 0x43dd09
mov eax, dword [esp + 0x44]
mov ebp, dword [eax + ecx]
cmp ebp, dword [esi + 1]
jne 0x43dd09
mov edx, dword [esp + 0x40]
cmp ecx, dword [esp + 0x28]
jb 0x43dbb4
mov edx, dword [esp + 0x10]
lea edi, [eax + ecx + 4]
lea ebp, [esi + 5]
mov eax, ebp
sub eax, edi
mov ecx, edx
add eax, ecx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x38], edx
cmp eax, ecx
jb 0x43dbd1
mov eax, ecx
mov ebx, eax
mov edx, edi
mov ecx, ebp
call fcn.00438be0
add edi, eax
mov dword [esp + 0x44], eax
cmp edi, dword [esp + 0x38]
je 0x43dbea
jmp 0x43dc00
mov edi, dword [esp + 0x44]
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0x34]
lea ecx, [edi + ebp]
call fcn.00438be0
add eax, edi
mov ebx, dword [esp + 0x10]
mov ebp, dword [esp + 0x64]
add eax, 4
inc esi
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x1c]
mov edi, esi
sub edi, eax
add ebx, 0xffffffe0
add eax, edi
cmp eax, ebx
ja 0x43dcc2
mov ecx, dword [esp + 0x1c]
mov edx, dword [ecx]
mov eax, dword [ebp + 0xc]
mov dword [eax], edx
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov edx, dword [ecx + 8]
mov dword [eax + 8], edx
mov edx, dword [ecx + 0xc]
mov dword [eax + 0xc], edx
cmp edi, 0x10
jbe 0x43dcd2
mov eax, dword [ebp + 0xc]
add eax, 0x10
lea edx, [edi - 0x10]
add ecx, 0x10
cmp edx, 0x10
lea ebx, [eax + edx]
mov dword [esp + 0x5c], ebx
mov ebx, dword [ecx]
mov dword [eax], ebx
mov ebx, dword [ecx + 4]
mov dword [eax + 4], ebx
mov ebx, dword [ecx + 8]
mov dword [eax + 8], ebx
mov ebx, dword [ecx + 0xc]
mov dword [eax + 0xc], ebx
jle 0x43dcd2
mov edx, dword [esp + 0x5c]
add eax, 0x10
add ecx, 0x10
mov ebx, dword [ecx]
mov dword [eax], ebx
mov ebx, dword [ecx + 4]
mov dword [eax + 4], ebx
mov ebx, dword [ecx + 8]
mov dword [eax + 8], ebx
mov ebx, dword [ecx + 0xc]
mov dword [eax + 0xc], ebx
mov ebx, dword [ecx + 0x10]
add ecx, 0x10
add eax, 0x10
mov dword [eax], ebx
mov ebx, dword [ecx + 4]
mov dword [eax + 4], ebx
mov ebx, dword [ecx + 8]
mov dword [eax + 8], ebx
mov ebx, dword [ecx + 0xc]
mov dword [eax + 0xc], ebx
add eax, 0x10
add ecx, 0x10
cmp eax, edx
jb 0x43dc83
jmp 0x43dcd2
mov edx, dword [esp + 0x1c]
push eax
mov eax, dword [ebp + 0xc]
call fcn.00438b50
add esp, 4
add dword [ebp + 0xc], edi
cmp edi, 0xffff
jbe 0x43dcf0
mov eax, dword [ebp + 4]
sub eax, dword [ebp]
mov dword [ebp + 0x24], 1
sar eax, 3
mov dword [ebp + 0x28], eax
mov ecx, dword [ebp + 4]
mov word [ecx + 4], di
mov edx, dword [ebp + 4]
mov ecx, dword [esp + 0x58]
mov dword [edx], 1
jmp 0x43dedb
cmp ebx, dword [esp + 0x30]
jb 0x43e19f
mov eax, dword [edi]
cmp eax, dword [esi]
jne 0x43e19f
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x40]
cmp ebx, eax
jb 0x43dd2d
mov ecx, dword [esp + 0x10]
cmp ebx, eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0x44], ecx
jb 0x43dd3d
mov eax, dword [esp + 0x34]
mov dword [esp + 0x2c], eax
lea ebp, [edi + 4]
lea eax, [esi + 4]
sub eax, ebp
add eax, ecx
mov ecx, dword [esp + 0x10]
sub edx, ebx
mov dword [esp + 0x48], edx
cmp eax, ecx
jb 0x43dd5b
mov eax, ecx
mov ebx, eax
mov edx, ebp
lea ecx, [esi + 4]
call fcn.00438be0
mov dword [esp + 0x38], eax
add eax, ebp
cmp eax, dword [esp + 0x44]
je 0x43dd79
mov eax, dword [esp + 0x38]
jmp 0x43dd90
mov ebp, dword [esp + 0x38]
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0x34]
lea ecx, [esi + ebp + 4]
call fcn.00438be0
add eax, ebp
mov ebp, dword [esp + 0x2c]
cmp ebp, edi
sbb edx, edx
lea ecx, [eax + 4]
mov eax, dword [esp + 0x1c]
neg edx
cmp eax, esi
sbb ebx, ebx
neg ebx
mov dword [esp + 0x38], ecx
test ebx, edx
je 0x43ddd0
nop
movzx edx, byte [esi - 1]
cmp dl, byte [edi - 1]
jne 0x43ddcc
dec edi
dec esi
inc ecx
cmp ebp, edi
sbb edx, edx
neg edx
cmp eax, esi
sbb ebx, ebx
neg ebx
test ebx, edx
jne 0x43ddb0
mov dword [esp + 0x38], ecx
mov ebx, dword [esp + 0x10]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x48]
mov ebp, dword [esp + 0x64]
mov edi, esi
sub edi, eax
add ebx, 0xffffffe0
add eax, edi
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x20], edx
cmp eax, ebx
ja 0x43de96
mov ecx, dword [esp + 0x1c]
mov edx, dword [ecx]
mov eax, dword [ebp + 0xc]
mov dword [eax], edx
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov edx, dword [ecx + 8]
mov dword [eax + 8], edx
mov edx, dword [ecx + 0xc]
mov dword [eax + 0xc], edx
cmp edi, 0x10
jbe 0x43dea6
mov eax, dword [ebp + 0xc]
add eax, 0x10
lea edx, [edi - 0x10]
add ecx, 0x10
cmp edx, 0x10
lea ebx, [eax + edx]
mov dword [esp + 0x5c], ebx
mov ebx, dword [ecx]
mov dword [eax], ebx
mov ebx, dword [ecx + 4]
mov dword [eax + 4], ebx
mov ebx, dword [ecx + 8]
mov dword [eax + 8], ebx
mov ebx, dword [ecx + 0xc]
mov dword [eax + 0xc], ebx
jle 0x43dea6
mov edx, dword [esp + 0x5c]
add eax, 0x10
add ecx, 0x10
mov ebx, dword [ecx]
mov dword [eax], ebx
mov ebx, dword [ecx + 4]
mov dword [eax + 4], ebx
mov ebx, dword [ecx + 8]
mov dword [eax + 8], ebx
mov ebx, dword [ecx + 0xc]
mov dword [eax + 0xc], ebx
mov ebx, dword [ecx + 0x10]
add ecx, 0x10
add eax, 0x10
mov dword [eax], ebx
mov ebx, dword [ecx + 4]
mov dword [eax + 4], ebx
mov ebx, dword [ecx + 8]
mov dword [eax + 8], ebx
mov ebx, dword [ecx + 0xc]
mov dword [eax + 0xc], ebx
add eax, 0x10
add ecx, 0x10
cmp eax, edx
jb 0x43de57
jmp 0x43dea6
mov edx, dword [esp + 0x1c]
push eax
mov eax, dword [ebp + 0xc]
call fcn.00438b50
add esp, 4
add dword [ebp + 0xc], edi
cmp edi, 0xffff
jbe 0x43dec4
mov eax, dword [ebp + 4]
sub eax, dword [ebp]
mov dword [ebp + 0x24], 1
sar eax, 3
mov dword [ebp + 0x28], eax
mov ecx, dword [ebp + 4]
mov edx, dword [esp + 0x48]
mov word [ecx + 4], di
mov eax, dword [ebp + 4]
mov ecx, dword [esp + 0x38]
add edx, 3
mov dword [eax], edx
lea eax, [ecx - 3]
cmp eax, 0xffff
jbe 0x43def8
mov edx, dword [ebp + 4]
sub edx, dword [ebp]
mov dword [ebp + 0x24], 2
sar edx, 3
mov dword [ebp + 0x28], edx
mov edx, dword [ebp + 4]
mov word [edx + 6], ax
mov eax, dword [esp + 0x10]
add dword [ebp + 4], 8
add esi, ecx
add eax, 0xfffffff8
mov dword [esp + 0x1c], esi
cmp esi, eax
ja 0x43e1ae
mov ebx, dword [esp + 0x6c]
mov ebp, dword [esp + 0x50]
mov eax, dword [esp + 0x18]
lea eax, [eax + ebp + 2]
cmp ebx, 3
ja case.default.0x43df2d
jmp dword [ebx*4 + 0x43e240]
mov edi, dword [esp + 0x14]
push edi
call fcn.00429a50
add esp, 4
jmp 0x43df85
mov edi, dword [esp + 0x14]
push edi
call fcn.00439da0
add esp, 4
jmp 0x43df85
mov edi, dword [esp + 0x14]
push edi
call fcn.0040d070
add esp, 4
jmp 0x43df85
mov edi, dword [esp + 0x14]
push edi
call fcn.0040d0a0
add esp, 4
jmp 0x43df85
mov eax, dword [eax]
mov edi, dword [esp + 0x14]
imul eax, eax, 0x9e3779b1
mov ecx, 0x20
sub ecx, edi
shr eax, cl
lea ecx, [ebp + 2]
mov ebp, dword [esp + 0x24]
mov dword [ebp + eax*4], ecx
lea eax, [esi - 2]
cmp ebx, 3
ja case.default.0x43df98
jmp dword [ebx*4 + 0x43e250]
push edi
call fcn.00429a50
add esp, 4
jmp 0x43dfdc
push edi
call fcn.00439da0
add esp, 4
jmp 0x43dfdc
push edi
call fcn.0040d070
add esp, 4
jmp 0x43dfdc
push edi
call fcn.0040d0a0
add esp, 4
jmp 0x43dfdc
mov eax, dword [eax]
imul eax, eax, 0x9e3779b1
mov ecx, 0x20
sub ecx, edi
shr eax, cl
mov edx, esi
sub edx, dword [esp + 0x18]
sub edx, 2
mov dword [ebp + eax*4], edx
lea esp, [esp]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x28]
mov eax, esi
sub eax, ecx
mov dword [esp + 0x5c], eax
sub eax, dword [esp + 0x2c]
cmp eax, edx
jae 0x43e00c
mov ecx, dword [esp + 0x3c]
sub edx, eax
dec edx
cmp edx, 3
sbb edx, edx
inc edx
cmp dword [esp + 0x30], eax
lea ebp, [eax + ecx]
sbb ecx, ecx
neg ecx
test ecx, edx
je 0x43e1ae
mov edx, dword [ebp]
cmp edx, dword [esi]
jne 0x43e1ae
cmp eax, dword [esp + 0x28]
jae 0x43e043
mov eax, dword [esp + 0x40]
mov dword [esp + 0x38], eax
jmp 0x43e04b
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x38], ecx
mov edx, dword [esp + 0x38]
mov ecx, dword [esp + 0x10]
add ebp, 4
lea eax, [esi + 4]
sub eax, ebp
add eax, edx
cmp eax, ecx
jb 0x43e063
mov eax, ecx
mov ebx, eax
mov edx, ebp
lea ecx, [esi + 4]
call fcn.00438be0
mov edi, eax
add ebp, edi
cmp ebp, dword [esp + 0x38]
je 0x43e07b
jmp 0x43e08e
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0x34]
lea ecx, [edi + esi + 4]
call fcn.00438be0
add eax, edi
mov ebx, dword [esp + 0x10]
mov ecx, dword [esp + 0x20]
mov edi, dword [esp + 0x64]
lea ebp, [eax + 4]
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x58], ebp
add ebx, 0xffffffe0
add ebp, 0xfffffffd
mov dword [esp + 0x20], eax
mov eax, dword [edi + 0xc]
mov dword [esp + 0x2c], ecx
cmp esi, ebx
ja 0x43e0d2
mov edx, dword [esi]
mov dword [eax], edx
mov ecx, dword [esi + 4]
mov dword [eax + 4], ecx
mov edx, dword [esi + 8]
mov dword [eax + 8], edx
mov ecx, dword [esi + 0xc]
mov dword [eax + 0xc], ecx
jmp 0x43e0dd
push esi
mov edx, esi
call fcn.00438b50
add esp, 4
mov edx, dword [edi + 4]
xor eax, eax
mov word [edx + 4], ax
mov ecx, dword [edi + 4]
mov dword [ecx], 1
cmp ebp, 0xffff
jbe 0x43e109
mov edx, dword [edi + 4]
sub edx, dword [edi]
mov dword [edi + 0x24], 2
sar edx, 3
mov dword [edi + 0x28], edx
mov eax, dword [edi + 4]
mov word [eax + 6], bp
mov eax, dword [esp + 0x6c]
add dword [edi + 4], 8
cmp eax, 3
ja case.default.0x43e11d
jmp dword [eax*4 + 0x43e260]
mov ecx, dword [esp + 0x14]
push ecx
mov eax, esi
call fcn.00429a50
add esp, 4
jmp 0x43e17b
mov edx, dword [esp + 0x14]
push edx
mov eax, esi
call fcn.00439da0
add esp, 4
jmp 0x43e17b
mov eax, dword [esp + 0x14]
push eax
mov eax, esi
call fcn.0040d070
add esp, 4
jmp 0x43e17b
mov ecx, dword [esp + 0x14]
push ecx
mov eax, esi
call fcn.0040d0a0
add esp, 4
jmp 0x43e17b
mov eax, dword [esi]
imul eax, eax, 0x9e3779b1
mov ecx, 0x20
sub ecx, dword [esp + 0x14]
shr eax, cl
mov edx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x24]
add esi, dword [esp + 0x58]
mov dword [ecx + eax*4], edx
mov eax, dword [esp + 0x10]
add eax, 0xfffffff8
mov dword [esp + 0x1c], esi
cmp esi, eax
jbe 0x43dff0
jmp 0x43e1ae
mov edx, esi
sub edx, dword [esp + 0x1c]
sar edx, 8
add edx, dword [esp + 0x4c]
add esi, edx
mov eax, dword [esp + 0x10]
add eax, 0xfffffff8
cmp esi, eax
jb 0x43dad0
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x2c]
pop edi
pop esi
mov dword [eax], ecx
mov dword [eax + 4], edx
mov eax, dword [esp + 8]
sub eax, dword [esp + 0x14]
pop ebp
pop ebx
add esp, 0x50
ret