Function at 0x4513be
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 0x451416
sub edx, edi
jmp 0x45141a
mov edx, dword [esp + 0x34]
mov ecx, dword [eax + 0x14]
mov dword [esp + 0x44], ecx
test ecx, ecx
je 0x451429
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 0x451447
mov ecx, edx
mov dword [esp + 0x28], edx
jmp 0x45144b
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 0x451b17
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 0x4514cd
sub edx, ebp
jmp 0x4514cf
mov edx, eax
cmp dword [esp + 0x44], 0
je 0x4514dc
mov dword [esp + 0x40], eax
jmp 0x4514e2
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 0x45152d
mov ebx, eax
sub ebx, ebp
jmp 0x45152f
mov ebx, edx
xor ebp, ebp
cmp dword [esp + 0x44], ebp
jne 0x451539
mov edx, ebx
sub eax, edx
cmp ecx, eax
jbe 0x451547
mov dword [esp + 0x30], ecx
mov dword [esp + 0x28], ebp
mov ecx, dword [esp + 0x20]
cmp ecx, eax
jbe 0x451557
mov dword [esp + 0x30], ecx
mov dword [esp + 0x20], ebp
cmp edi, dword [esp + 0x6c]
jae 0x451ae6
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.0x451580
jmp dword [eax*4 + 0x452240]
mov ebx, dword [esp + 0x14]
push ebx
mov eax, esi
call fcn.00443a20
add esp, 4
mov ebp, eax
jmp 0x4515ec
mov ebx, dword [esp + 0x14]
push ebx
mov eax, esi
call fcn.00420fc0
add esp, 4
mov ebp, eax
jmp 0x4515ec
mov ebx, dword [esp + 0x14]
push ebx
mov eax, esi
call fcn.00443a50
add esp, 4
mov ebp, eax
jmp 0x4515ec
mov ebx, dword [esp + 0x14]
push ebx
mov eax, esi
call fcn.00420ff0
add esp, 4
mov ebp, eax
mov dword [esp + 0x2c], eax
jmp 0x4515f0
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.0x4515ff
jmp dword [eax*4 + 0x452250]
push ebx
mov eax, edi
call fcn.00443a20
add esp, 4
jmp 0x45164b
push ebx
mov eax, edi
call fcn.00420fc0
add esp, 4
jmp 0x45164b
push ebx
mov eax, edi
call fcn.00443a50
add esp, 4
jmp 0x45164b
push ebx
mov eax, edi
call fcn.00420ff0
add esp, 4
jmp 0x45164b
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 0x4516dc
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 0x45175c
mov eax, dword [esp + 0x40]
cmp dword [esp + 0x48], eax
jbe 0x4516ee
mov edx, dword [esp + 0x3c]
cmp dword [ecx], edx
je 0x45170a
cmp dword [esp + 0x38], eax
jbe 0x451ac2
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x50]
cmp dword [ecx], eax
jne 0x451ac2
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 0x45175c
mov edi, edi
movzx edx, byte [esi - 1]
cmp dl, byte [ecx - 1]
jne 0x45175c
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 0x451740
mov ebx, dword [esp + 0x10]
lea edx, [edi + ecx]
lea ecx, [edi + esi]
call fcn.00443970
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 0x451827
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 0x45183e
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 0x45183a
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 0x4517e8
jmp 0x45183a
mov edx, dword [esp + 0x1c]
push eax
mov eax, dword [ebp + 0xc]
add ebx, 0xffffffe0
call fcn.0044cc40
add esp, 4
mov edx, dword [esp + 0x2c]
add dword [ebp + 0xc], edx
cmp edx, 0xffff
jbe 0x45185c
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 0x45188a
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 0x451abd
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.0x4518bf
jmp dword [ecx*4 + 0x452260]
mov edi, dword [esp + 0x14]
push edi
call fcn.00443a20
add esp, 4
jmp 0x451917
mov edi, dword [esp + 0x14]
push edi
call fcn.00420fc0
add esp, 4
jmp 0x451917
mov edi, dword [esp + 0x14]
push edi
call fcn.00443a50
add esp, 4
jmp 0x451917
mov edi, dword [esp + 0x14]
push edi
call fcn.00420ff0
add esp, 4
jmp 0x451917
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.0x45192d
jmp dword [ecx*4 + 0x452270]
push edi
call fcn.00443a20
add esp, 4
jmp 0x451971
push edi
call fcn.00420fc0
add esp, 4
jmp 0x451971
push edi
call fcn.00443a50
add esp, 4
jmp 0x451971
push edi
call fcn.00420ff0
add esp, 4
jmp 0x451971
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 0x451abd
mov ecx, dword [esi]
mov eax, esi
sub eax, dword [esp + 0x28]
cmp ecx, dword [eax]
jne 0x451abd
mov ebx, dword [esp + 0x10]
lea edx, [eax + 4]
lea ecx, [esi + 4]
call fcn.00443970
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.0x4519c7
mov eax, dword [esp + 0x6c]
jmp dword [eax*4 + 0x452280]
mov ecx, dword [esp + 0x14]
push ecx
mov eax, esi
call fcn.00443a20
add esp, 4
jmp 0x451a25
mov edx, dword [esp + 0x14]
push edx
mov eax, esi
call fcn.00420fc0
add esp, 4
jmp 0x451a25
mov eax, dword [esp + 0x14]
push eax
mov eax, esi
call fcn.00443a50
add esp, 4
jmp 0x451a25
mov ecx, dword [esp + 0x14]
push ecx
mov eax, esi
call fcn.00420ff0
add esp, 4
jmp 0x451a25
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 0x451a5f
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 0x451a72
mov edx, dword [esp + 0x1c]
mov eax, dword [ebp + 0xc]
push edx
add ebx, 0xffffffe0
call fcn.0044cc40
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 0x451a9f
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 0x451988
lea edi, [esi + 1]
jmp 0x451ad3
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 0x451570
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x451af2
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x68]
mov dword [ecx], eax
mov eax, dword [esp + 0x28]
test eax, eax
jne 0x451b04
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 0x45221d
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.0x451b39
jmp dword [eax*4 + 0x452290]
mov ecx, dword [esp + 0x14]
push ecx
mov eax, esi
call fcn.00443a20
add esp, 4
jmp 0x451b97
mov edx, dword [esp + 0x14]
push edx
mov eax, esi
call fcn.00420fc0
add esp, 4
jmp 0x451b97
mov eax, dword [esp + 0x14]
push eax
mov eax, esi
call fcn.00443a50
add esp, 4
jmp 0x451b97
mov ecx, dword [esp + 0x14]
push ecx
mov eax, esi
call fcn.00420ff0
add esp, 4
jmp 0x451b97
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 0x451bae
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 0x451bcd
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 0x451d69
mov eax, dword [esp + 0x44]
mov ebp, dword [eax + ecx]
cmp ebp, dword [esi + 1]
jne 0x451d69
mov edx, dword [esp + 0x40]
cmp ecx, dword [esp + 0x28]
jb 0x451c14
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 0x451c31
mov eax, ecx
mov ebx, eax
mov edx, edi
mov ecx, ebp
call fcn.00443970
add edi, eax
mov dword [esp + 0x44], eax
cmp edi, dword [esp + 0x38]
je 0x451c4a
jmp 0x451c60
mov edi, dword [esp + 0x44]
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0x34]
lea ecx, [edi + ebp]
call fcn.00443970
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 0x451d22
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 0x451d32
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 0x451d32
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 0x451ce3
jmp 0x451d32
mov edx, dword [esp + 0x1c]
push eax
mov eax, dword [ebp + 0xc]
call fcn.0044cc40
add esp, 4
add dword [ebp + 0xc], edi
cmp edi, 0xffff
jbe 0x451d50
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 0x451f3b
cmp ebx, dword [esp + 0x30]
jb 0x4521ff
mov eax, dword [edi]
cmp eax, dword [esi]
jne 0x4521ff
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x40]
cmp ebx, eax
jb 0x451d8d
mov ecx, dword [esp + 0x10]
cmp ebx, eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0x44], ecx
jb 0x451d9d
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 0x451dbb
mov eax, ecx
mov ebx, eax
mov edx, ebp
lea ecx, [esi + 4]
call fcn.00443970
mov dword [esp + 0x38], eax
add eax, ebp
cmp eax, dword [esp + 0x44]
je 0x451dd9
mov eax, dword [esp + 0x38]
jmp 0x451df0
mov ebp, dword [esp + 0x38]
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0x34]
lea ecx, [esi + ebp + 4]
call fcn.00443970
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 0x451e30
nop
movzx edx, byte [esi - 1]
cmp dl, byte [edi - 1]
jne 0x451e2c
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 0x451e10
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 0x451ef6
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 0x451f06
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 0x451f06
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 0x451eb7
jmp 0x451f06
mov edx, dword [esp + 0x1c]
push eax
mov eax, dword [ebp + 0xc]
call fcn.0044cc40
add esp, 4
add dword [ebp + 0xc], edi
cmp edi, 0xffff
jbe 0x451f24
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 0x451f58
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 0x45220e
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.0x451f8d
jmp dword [ebx*4 + 0x4522a0]
mov edi, dword [esp + 0x14]
push edi
call fcn.00443a20
add esp, 4
jmp 0x451fe5
mov edi, dword [esp + 0x14]
push edi
call fcn.00420fc0
add esp, 4
jmp 0x451fe5
mov edi, dword [esp + 0x14]
push edi
call fcn.00443a50
add esp, 4
jmp 0x451fe5
mov edi, dword [esp + 0x14]
push edi
call fcn.00420ff0
add esp, 4
jmp 0x451fe5
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.0x451ff8
jmp dword [ebx*4 + 0x4522b0]
push edi
call fcn.00443a20
add esp, 4
jmp 0x45203c
push edi
call fcn.00420fc0
add esp, 4
jmp 0x45203c
push edi
call fcn.00443a50
add esp, 4
jmp 0x45203c
push edi
call fcn.00420ff0
add esp, 4
jmp 0x45203c
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 0x45206c
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 0x45220e
mov edx, dword [ebp]
cmp edx, dword [esi]
jne 0x45220e
cmp eax, dword [esp + 0x28]
jae 0x4520a3
mov eax, dword [esp + 0x40]
mov dword [esp + 0x38], eax
jmp 0x4520ab
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 0x4520c3
mov eax, ecx
mov ebx, eax
mov edx, ebp
lea ecx, [esi + 4]
call fcn.00443970
mov edi, eax
add ebp, edi
cmp ebp, dword [esp + 0x38]
je 0x4520db
jmp 0x4520ee
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0x34]
lea ecx, [edi + esi + 4]
call fcn.00443970
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 0x452132
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 0x45213d
push esi
mov edx, esi
call fcn.0044cc40
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 0x452169
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.0x45217d
jmp dword [eax*4 + 0x4522c0]
mov ecx, dword [esp + 0x14]
push ecx
mov eax, esi
call fcn.00443a20
add esp, 4
jmp 0x4521db
mov edx, dword [esp + 0x14]
push edx
mov eax, esi
call fcn.00420fc0
add esp, 4
jmp 0x4521db
mov eax, dword [esp + 0x14]
push eax
mov eax, esi
call fcn.00443a50
add esp, 4
jmp 0x4521db
mov ecx, dword [esp + 0x14]
push ecx
mov eax, esi
call fcn.00420ff0
add esp, 4
jmp 0x4521db
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 0x452050
jmp 0x45220e
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 0x451b30
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