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

Disassembly:
sub esp, 0x364
xor edx, edx
mov dword [esp + 0xcc], edx
push ebx
mov dword [esp + 0xd4], edx
push esi
push edi
xor ecx, ecx
mov dword [esp + 0x24], edx
push ebp
mov esi, dword [esp + 0x37c]
mov dword [esp + 0x38], edx
mov dword [esp + 0x2c], edx
mov dword [esp + 0x14], edx
cmp esi, ecx
jg 0x43d684
mov dword [esp + 0x14], 0x6000000
jmp 0x43eaff
test byte [esp + 0x380], 0x20
je 0x43d6b1
mov edi, dword [esp + 0x378]
movsx eax, byte [edi]
cmp eax, 9
jl 0x43d6b1
cmp eax, 0xd
jle 0x43d6a7
cmp eax, 0x20
jne 0x43d6b1
inc dword [esp + 0x378]
dec esi
jne 0x43d68e
test esi, esi
je 0x43d6de
mov edi, dword [esp + 0x378]
movsx eax, byte [edi]
cmp eax, 0x2b
je 0x43d6d1
cmp eax, 0x2d
jne 0x43d6de
mov dword [esp + 0x14], 4
dec esi
inc dword [esp + 0x378]
or dword [esp + 0x14], 2
mov dword [esp + 0x4c], 0
test esi, esi
je 0x43d859
lea ebx, [esp + 0x2b4]
mov edi, dword [esp + 0x378]
movsx edi, byte [edi]
lea ebp, [edi - 9]
cmp ebp, 0x68
ja case.0x43d713.28
xor eax, eax
mov al, byte [ebp + 0x43eb8c]
jmp dword [eax*4 + 0x43eb3c]
test byte [esp + 0x380], 1
je case.0x43d713.28
jmp 0x43d822
test byte [esp + 0x380], 2
jne 0x43d822
test byte [esp + 0x380], 0x40
je case.0x43d713.28
mov edi, 0x30
cmp dword [esp + 0x28], 0
jne case.0x43d713.16
mov eax, dword [esp + 0x14]
and eax, 1
add dword [esp + 0x38], eax
sub dword [esp + 0x4c], eax
inc dword [esp + 0x4c]
jmp 0x43d822
test byte [esp + 0x380], 4
jne 0x43d822
test byte [esp + 0x383], 8
je case.0x43d713.28
test byte [esp + 0x14], 1
jne case.0x43d713.28
or dword [esp + 0x14], 1
mov dword [esp + 0x38], 0
jmp 0x43d822
test byte [esp + 0x380], 8
jne 0x43d822
test byte [esp + 0x383], 8
jne case.0x43d713.28
test byte [esp + 0x14], 1
jne case.0x43d713.28
or dword [esp + 0x14], 1
mov dword [esp + 0x38], 0
jmp 0x43d822
test byte [esp + 0x380], 0x10
je case.0x43d713.28
jmp 0x43d822
inc dword [esp + 0x28]
inc dword [esp + 0x38]
cmp dword [esp + 0x2c], 9
je 0x43d805
lea edx, [edx + edx*4]
inc dword [esp + 0x2c]
lea edx, [edi + edx*2 - 0x30]
jmp 0x43d822
lea eax, [esp + 0x2bc]
cmp ebx, eax
jae 0x43d822
mov dword [ebx + 4], edx
add ebx, 4
inc ecx
lea edx, [edi - 0x30]
mov dword [esp + 0x2c], 1
dec esi
inc dword [esp + 0x378]
test esi, esi
jne 0x43d6f5
jmp 0x43d859
test byte [esp + 0x381], 8
je 0x43d859
jmp case.0x43d713.28
test byte [esp + 0x381], 0x10
jne case.0x43d713.28
dec esi
inc dword [esp + 0x378]
xor ebx, ebx
test esi, esi
mov dword [esp + 0x18], ebx
je 0x43dad4
mov edi, dword [esp + 0x378]
or dword [esp + 0x14], 8
movsx edi, byte [edi]
lea ebp, [edi - 9]
cmp ebp, 0x56
ja case.0x43d88a.18
xor eax, eax
mov al, byte [ebp + 0x43ec20]
jmp dword [eax*4 + 0x43ebf8]
test byte [esp + 0x380], 0x80
je case.0x43d713.28
mov eax, dword [esp + 0x14]
and eax, 1
or eax, dword [esp + 0x28]
or eax, dword [esp + 0x4c]
jne case.0x43d713.28
mov ebp, 0x473b58
test esi, esi
je 0x43d8e7
mov al, byte [ebp]
test al, al
je 0x43d8e7
inc ebp
mov edi, dword [esp + 0x378]
or al, 0x20
mov bl, byte [edi]
or bl, 0x20
cmp bl, al
jne case.0x43d713.28
dec esi
inc dword [esp + 0x378]
test esi, esi
jne 0x43d8bd
cmp byte [ebp], 0
jne case.0x43d713.28
test byte [esp + 0x14], 4
je 0x43d90c
mov eax, dword [0x461204]
mov ebx, dword [0x461200]
mov dword [esp + 0x100], eax
jmp 0x43d91e
mov eax, dword [0x4611fc]
mov ebx, dword [0x4611f8]
mov dword [esp + 0x100], eax
test byte [esp + 0x383], 0x40
mov dword [esp + 0xfc], ebx
mov ebx, dword [esp + 0xfc]
mov eax, dword [esp + 0x100]
mov dword [esp + 0xe0], eax
mov dword [esp + 0xdc], ebx
je case.0x43d713.28
or dword [esp + 0x14], 0xc000000
jmp case.0x43d713.28
test byte [esp + 0x380], 0x80
je case.0x43d713.28
mov eax, dword [esp + 0x14]
and eax, 3
or eax, dword [esp + 0x28]
or eax, dword [esp + 0x4c]
jne case.0x43d713.28
mov ebp, 0x473b64
test esi, esi
je 0x43d9b2
mov al, byte [ebp]
test al, al
je 0x43d9b2
inc ebp
mov edi, dword [esp + 0x378]
or al, 0x20
mov bl, byte [edi]
or bl, 0x20
cmp bl, al
jne case.0x43d713.28
dec esi
inc dword [esp + 0x378]
test esi, esi
jne 0x43d988
cmp byte [ebp], 0
jne case.0x43d713.28
test byte [esp + 0x14], 4
je 0x43d9d7
mov eax, dword [0x4611f4]
mov ebx, dword [0x4611f0]
mov dword [esp + 0xf8], eax
jmp 0x43d9e9
mov eax, dword [0x4611ec]
mov ebx, dword [0x4611e8]
mov dword [esp + 0xf8], eax
test byte [esp + 0x383], 0x40
mov dword [esp + 0xf4], ebx
mov ebx, dword [esp + 0xf4]
mov eax, dword [esp + 0xf8]
mov dword [esp + 0xe0], eax
mov dword [esp + 0xdc], ebx
je case.0x43d713.28
or dword [esp + 0x14], 0xa000000
jmp case.0x43d713.28
test byte [esp + 0x380], 1
je case.0x43d88a.18
jmp 0x43da68
test byte [esp + 0x380], 2
jne 0x43da68
test byte [esp + 0x380], 0x40
je case.0x43d88a.18
mov edi, 0x30
test ebx, ebx
je 0x43da68
mov eax, dword [esp + 0x18]
inc ebx
lea ebp, [eax + eax*4]
mov dword [esp + 0x18], ebp
lea edi, [edi + ebp*2 - 0x30]
mov dword [esp + 0x18], edi
dec esi
inc dword [esp + 0x378]
test esi, esi
jne 0x43d867
jmp case.0x43d88a.18
test byte [esp + 0x380], 4
je case.0x43d88a.18
jmp 0x43da68
or dword [esp + 0x14], 0x20
mov eax, dword [esp + 0x14]
and eax, 0x10
or eax, ebx
jne case.0x43d88a.18
or dword [esp + 0x14], 0x10
jmp 0x43da68
test byte [esp + 0x380], 8
je case.0x43d88a.18
jmp 0x43da68
test byte [esp + 0x380], 0x10
je case.0x43d88a.18
jmp 0x43da68
mov ebx, dword [esp + 0x20]
test esi, esi
je 0x43dad4
test byte [esp + 0x381], 0x80
je 0x43dad4
or dword [esp + 0x14], 0x3000000
jmp 0x43eaff
cmp dword [esp + 0x28], 0
je 0x43eaff
test byte [esp + 0x14], 8
je 0x43db17
cmp ebx, 4
ja 0x43ea32
test byte [esp + 0x14], 0x20
je 0x43db00
mov eax, dword [esp + 0x18]
neg eax
mov dword [esp + 0x18], eax
test byte [esp + 0x381], 4
je 0x43db24
mov eax, dword [esp + 0x388]
sub dword [esp + 0x18], eax
jmp 0x43db24
mov eax, dword [esp + 0x388]
neg eax
mov dword [esp + 0x18], eax
test byte [esp + 0x14], 1
je 0x43db31
mov eax, dword [esp + 0x38]
jmp 0x43db38
mov eax, dword [esp + 0x384]
mov esi, dword [esp + 0x28]
sub dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
add eax, esi
cmp eax, 0xfffffebd
jl 0x43ea32
cmp eax, 0x135
jg 0x43ea32
lea eax, [esi - 0x1b]
test eax, eax
jle 0x43db67
add dword [esp + 0x18], eax
cmp dword [esp + 0x18], 0
jne 0x43db75
cmp dword [esp + 0x28], 0x12
jbe 0x43dbe0
mov dword [esp + 0x3c], 0
cmp dword [esp + 0x18], 0x16
jg 0x43db90
cmp dword [esp + 0x18], 0xffffffea
jl 0x43db90
or dword [esp + 0x14], 0x40
cmp dword [esp + 0x28], 0xf
jbe 0x43dbb0
cmp dword [esp + 0x28], 0x10
ja 0x43dc09
cmp dword [esp + 0x2b8], 0x35afe535
jb 0x43dbb0
test dl, 1
jne 0x43dc09
test byte [esp + 0x14], 0x40
jne 0x43dbe0
cmp dword [esp + 0x18], 0
jl 0x43dc09
mov eax, dword [esp + 0x18]
add eax, esi
cmp eax, 0x25
jg 0x43dc09
mov eax, dword [esp + 0x18]
mov dword [esp + 0x3c], eax
mov eax, 0xf
sub eax, esi
mov dword [esp + 0x18], eax
sub dword [esp + 0x3c], eax
cmp dword [esp + 0x28], 9
ja 0x43e8f9
mov dword [esp + 0x12c], edx
mov dword [esp + 0x130], 0
fild qword [esp + 0x12c]
jmp 0x43e994
cmp dword [esp + 0x28], 9
ja 0x43dc3c
mov dword [esp + 0x10], 1
xor eax, eax
test edx, edx
jle 0x43dc25
add edx, edx
inc eax
test edx, edx
jg 0x43dc1e
mov ecx, 0x20
mov dword [esp + 0x138], edx
sub ecx, eax
mov dword [esp + 0x24], ecx
jmp 0x43de2d
mov dword [esp + ecx*4 + 0x2b8], edx
inc ecx
mov eax, dword [esp + 0x2b8]
mov esi, dword [0x4611bc]
mov dword [esp + 0x1b8], eax
cmp ecx, 2
mov dword [esp + 0x48], 2
jb 0x43dd64
mov dword [esp + 0x50], 8
cmp ecx, dword [esp + 0x48]
jne 0x43dc82
mov eax, dword [esp + 0x2c]
mov esi, dword [eax*4 + 0x461198]
mov edx, dword [esp + 0x1b8]
mov edi, dword [esp + 0x48]
mov dword [esp + 0x1b8], 0
dec edi
cmp edi, 1
jl 0x43dcfb
lea ebx, [esp + 0x1b8]
mov dword [esp + 0xd0], esi
mov dword [esp + 0xcc], edx
mov eax, dword [esp + 0xd0]
mul dword [esp + 0xcc]
mov dword [esp + 0xc8], eax
mov dword [esp + 0xc4], edx
mov ebp, dword [esp + 0xc8]
mov edx, dword [ebx + 4]
mov eax, dword [ebx]
add eax, ebp
mov dword [ebx], eax
cmp eax, ebp
mov eax, 1
lea ebp, [ebx + 4]
adc eax, 0xffffffff
add eax, dword [esp + 0xc4]
dec edi
mov dword [ebx + 4], eax
mov ebx, ebp
jne 0x43dca5
mov eax, dword [esp + 0x50]
mov eax, dword [esp + eax + 0x2b4]
add dword [esp + 0x1b8], eax
cmp eax, dword [esp + 0x1b8]
jbe 0x43dd51
mov edx, 2
mov eax, dword [esp + 0x50]
mov dword [esp + eax + 0x1b8], 0
cmp dword [esp + 0x1bc], 0xffffffff
jne 0x43dd4a
lea eax, [esp + 0x1bc]
mov dword [eax], 0
add eax, 4
inc edx
cmp dword [eax], 0xffffffff
je 0x43dd3b
inc dword [esp + edx*4 + 0x1b4]
add dword [esp + 0x50], 4
inc dword [esp + 0x48]
cmp ecx, dword [esp + 0x48]
jae 0x43dc75
lea eax, [esp + ecx*4 + 0x1b4]
mov dword [esp + 0x10], ecx
cmp dword [eax], 0
jne 0x43dd80
sub eax, 4
dec dword [esp + 0x10]
cmp dword [eax], 0
je 0x43dd74
xor edx, edx
mov eax, dword [esp + 0x10]
lea ecx, [esp + eax*4 + 0x1b4]
cmp dword [ecx], edx
jle 0x43dd9c
mov eax, dword [ecx]
inc edx
add eax, eax
mov dword [ecx], eax
test eax, eax
jg 0x43dd91
mov esi, dword [esp + 0x10]
mov eax, esi
shl eax, 5
sub eax, edx
test edx, edx
mov dword [esp + 0x24], eax
je 0x43ddf6
mov eax, dword [ecx]
mov dword [esp + 0x138], eax
mov eax, esi
dec eax
je 0x43de11
mov cl, 0x20
sub cl, dl
mov byte [esp + 0xc0], cl
mov edi, esi
mov ebx, dword [esp + eax*4 + 0x1b4]
sub edi, eax
mov ebp, ebx
inc edi
mov cl, byte [esp + 0xc0]
shr ebp, cl
mov cl, dl
or dword [esp + edi*4 + 0x130], ebp
shl ebx, cl
dec eax
mov dword [esp + edi*4 + 0x134], ebx
jne 0x43ddc8
jmp 0x43de11
test esi, esi
je 0x43de11
mov eax, dword [esp + esi*4 + 0x1b4]
mov ecx, dword [esp + 0x10]
sub ecx, esi
dec esi
mov dword [esp + ecx*4 + 0x138], eax
jne 0x43ddfa
mov eax, dword [esp + 0x10]
lea eax, [esp + eax*4 + 0x134]
cmp dword [eax], 0
jne 0x43de2d
sub eax, 4
dec dword [esp + 0x10]
cmp dword [eax], 0
je 0x43de21
test byte [esp + 0x14], 0x40
je 0x43def9
mov eax, dword [esp + 0x10]
and eax, 0x7ffffff
cmp eax, 2
ja 0x43def9
test dword [esp + 0x13c], 0x7ff
jne 0x43def9
cmp dword [esp + 0x10], 2
mov esi, 0
adc esi, 0xffffffff
and esi, dword [esp + 0x13c]
cmp dword [esp + 0x24], 0xfffffc02
jle 0x43dea8
shr esi, 0xb
mov eax, dword [esp + 0x138]
shl eax, 0x15
mov edx, dword [esp + 0x24]
or esi, eax
add edx, 0x3fe
shl edx, 0x14
mov eax, dword [esp + 0x138]
and eax, 0x7ffff800
shr eax, 0xb
or edx, eax
jmp 0x43dee6
mov ebx, 0xfffffc0e
sub ebx, dword [esp + 0x24]
cmp ebx, 0x20
jl 0x43dec8
mov esi, dword [esp + 0x138]
sub ebx, 0x20
mov cl, bl
xor edx, edx
shr esi, cl
jmp 0x43dee6
mov cl, bl
mov eax, dword [esp + 0x138]
shr esi, cl
mov cl, 0x20
mov edx, dword [esp + 0x138]
sub cl, bl
shl eax, cl
or esi, eax
mov cl, bl
shr edx, cl
mov dword [esp + 0xd8], edx
mov dword [esp + 0xd4], esi
jmp 0x43e99b
cmp dword [esp + 0x18], 0
je 0x43e6f0
cmp dword [esp + 0x10], 2
jb 0x43dfb2
mov dword [esp + 0x10], 2
cmp dword [esp + 0x140], 0
mov eax, 1
jl 0x43df28
xor eax, eax
add dword [esp + 0x13c], eax
cmp eax, dword [esp + 0x13c]
jbe 0x43df95
mov dword [esp + 0x134], 0
mov dword [esp + 0x10], 1
cmp dword [esp + 0x138], 0xffffffff
jne 0x43df68
lea eax, [esp + 0x138]
sub eax, 4
dec dword [esp + 0x10]
cmp dword [eax], 0xffffffff
je 0x43df5c
cmp dword [esp + 0x10], 0
je 0x43df7c
mov eax, dword [esp + 0x10]
inc dword [esp + eax*4 + 0x134]
jmp 0x43dfb2
mov dword [esp + 0x10], 1
mov dword [esp + 0x138], 0x80000000
inc dword [esp + 0x24]
jmp 0x43dfb2
cmp dword [esp + 0x13c], 0
jne 0x43dfb2
lea eax, [esp + 0x13c]
sub eax, 4
dec dword [esp + 0x10]
cmp dword [eax], 0
je 0x43dfa6
mov dword [esp + 0x1c], 2
mov ecx, dword [esp + 0x18]
cmp ecx, 0xffffffd1
jl 0x43e016
cmp ecx, 0x2f
jg 0x43e016
movsx eax, word [ecx*2 + 0x460a56]
lea edx, [ecx*8 + 0x46087c]
mov dword [esp + 0x30], eax
lea ecx, [esp + 0x178]
mov eax, dword [edx]
sub edx, 4
mov dword [ecx], eax
add ecx, 4
lea eax, [esp + 0x17c]
cmp ecx, eax
jbe 0x43dfe2
cmp dword [esp + 0x17c], 0
jne 0x43e456
sub eax, 4
dec dword [esp + 0x1c]
cmp dword [eax], 0
je 0x43e005
jmp 0x43e456
mov edx, ecx
test ecx, ecx
jge 0x43e081
neg edx
mov esi, edx
sar esi, 3
mov ax, word [esi*2 + 0x460b50]
shr ax, 5
movzx ebx, ax
cmp ebx, edx
jge 0x43e037
inc esi
mov ax, word [esi*2 + 0x460b50]
xor edx, edx
mov dx, ax
shr ax, 5
and edx, 0x1f
movzx ebx, ax
movsx eax, word [edx*2 + 0x460b30]
add ecx, ebx
lea esi, [edx*8 + 0x460abc]
lea edx, [esp + 0x278]
mov dword [esp + 0x5c], eax
mov eax, dword [esi]
sub esi, 4
mov dword [edx], eax
add edx, 4
lea eax, [esp + 0x27c]
cmp edx, eax
jbe 0x43e06a
jmp 0x43e0e0
sar edx, 3
mov ax, word [edx*2 + 0x460c42]
shr ax, 5
movzx ebx, ax
cmp ebx, ecx
jg 0x43e098
inc edx
mov ax, word [edx*2 + 0x460c40]
xor edx, edx
mov dx, ax
shr ax, 5
and edx, 0x1f
movzx ebx, ax
movsx eax, word [edx*2 + 0x460c20]
sub ecx, ebx
lea esi, [edx*8 + 0x460bbc]
lea edx, [esp + 0x278]
mov dword [esp + 0x5c], eax
mov eax, dword [esi]
sub esi, 4
mov dword [edx], eax
add edx, 4
lea eax, [esp + 0x27c]
cmp edx, eax
jbe 0x43e0cb
movsx eax, word [ecx*2 + 0x460a56]
lea ecx, [ecx*8 + 0x46087c]
lea edx, [esp + 0x178]
mov dword [esp + 0x30], eax
mov eax, dword [ecx]
sub ecx, 4
mov dword [edx], eax
add edx, 4
lea eax, [esp + 0x17c]
cmp edx, eax
jbe 0x43e0fa
cmp dword [esp + 0x17c], 0
jne 0x43e125
sub eax, 4
dec dword [esp + 0x1c]
cmp dword [eax], 0
je 0x43e119
mov esi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x1c]
inc esi
mov eax, dword [esp + 0x27c]
mov ecx, dword [esp + ecx*4 + 0x174]
mov dword [esp + 0xb8], eax
mov dword [esp + 0xbc], ecx
mov eax, dword [esp + 0xbc]
mul dword [esp + 0xb8]
mov dword [esp + 0xb4], eax
mov dword [esp + 0xb0], edx
lea edi, [esi*4]
mov eax, dword [esp + 0xb4]
mov edx, dword [esp + 0xb0]
lea ebx, [esp + 0x278]
dec esi
mov dword [esp + edi + 0x238], eax
mov dword [esp + edi + 0x334], 0
mov dword [esp + edi + 0x234], edx
mov eax, dword [ebx]
mov dword [esp + 0xac], ecx
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 0xac]
mul dword [esp + 0xa8]
mov dword [esp + 0xa4], eax
mov dword [esp + 0xa0], edx
mov ebp, dword [esp + 0xa4]
lea eax, [esp + edi + 0x234]
mov edx, dword [eax]
add edx, ebp
mov dword [eax], edx
cmp edx, ebp
mov eax, 1
adc eax, 0xffffffff
sub edi, 4
add eax, dword [esp + 0xa0]
sub ebx, 4
mov dword [esp + edi + 0x234], eax
lea eax, [esp + 0x274]
cmp ebx, eax
jne 0x43e19c
mov dword [esp + esi*4 + 0x334], 0
dec esi
js 0x43e237
lea edi, [esp + esi*4 + 0x234]
lea edx, [esi*4]
inc esi
xor eax, eax
std
mov ecx, esi
rep stosd dword es:[edi], eax
lea edi, [esp + edx + 0x334]
mov ecx, esi
cld
std
rep stosd dword es:[edi], eax
cld
mov eax, dword [esp + 0x1c]
dec eax
je 0x43e2f5
lea ebx, [esp + eax*4 + 0x174]
lea ecx, [eax*4 + 8]
mov edi, ecx
lea ebp, [esp + 0x27c]
mov esi, dword [ebx]
mov eax, dword [ebp]
mov dword [esp + 0x9c], esi
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x9c]
mul dword [esp + 0x98]
mov dword [esp + 0x94], eax
mov dword [esp + 0x90], edx
mov edx, dword [esp + 0x94]
mov eax, dword [esp + edi + 0x234]
add eax, edx
mov dword [esp + edi + 0x234], eax
cmp eax, edx
mov edx, 1
mov eax, dword [esp + edi + 0x230]
adc edx, 0xffffffff
add edx, dword [esp + 0x90]
add eax, edx
mov dword [esp + edi + 0x230], eax
cmp eax, edx
mov eax, 1
adc eax, 0xffffffff
sub edi, 4
sub ebp, 4
add dword [esp + edi + 0x330], eax
lea eax, [esp + 0x274]
cmp ebp, eax
jne 0x43e25b
sub ebx, 4
sub ecx, 4
cmp ecx, 8
jne 0x43e250
add dword [esp + 0x1c], 2
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x1c]
xor esi, esi
add dword [esp + 0x30], eax
lea edx, [esp + ecx*4 + 0x174]
mov eax, dword [esp + ecx*4 + 0x234]
mov dword [edx], eax
mov eax, ecx
dec eax
je 0x43e34a
lea ecx, [eax*4]
add esi, dword [esp + ecx + 0x334]
mov eax, dword [esp + ecx + 0x234]
add eax, esi
mov dword [esp + ecx + 0x174], eax
cmp eax, esi
mov esi, 1
adc esi, 0xffffffff
sub ecx, 4
jne 0x43e324
cmp dword [edx], 0
jne 0x43e35b
sub edx, 4
dec dword [esp + 0x1c]
cmp dword [edx], 0
je 0x43e34f
cmp dword [esp + 0x178], 0
jle 0x43e396
shl dword [esp + 0x178], 1
dec dword [esp + 0x30]
cmp dword [esp + 0x1c], 2
jb 0x43e396
lea eax, [esp + 0x17c]
mov ecx, dword [esp + 0x1c]
dec ecx
mov edx, dword [eax]
add eax, 4
shr edx, 0x1f
or dword [eax - 8], edx
shl dword [eax - 4], 1
dec ecx
jne 0x43e384
mov ecx, dword [esp + 0x1c]
cmp dword [esp + ecx*4 + 0x174], 0
jne 0x43e3a8
dec dword [esp + 0x1c]
cmp dword [esp + 0x1c], 2
jb 0x43e456
mov dword [esp + 0x1c], 2
cmp dword [esp + 0x180], 0
mov eax, 1
jl 0x43e3cc
xor eax, eax
add dword [esp + 0x17c], eax
cmp dword [esp + 0x17c], eax
jae 0x43e439
mov dword [esp + 0x174], 0
mov dword [esp + 0x1c], 1
cmp dword [esp + 0x178], 0xffffffff
jne 0x43e40c
lea eax, [esp + 0x178]
sub eax, 4
dec dword [esp + 0x1c]
cmp dword [eax], 0xffffffff
je 0x43e400
cmp dword [esp + 0x1c], 0
je 0x43e420
mov ecx, dword [esp + 0x1c]
inc dword [esp + ecx*4 + 0x174]
jmp 0x43e456
mov dword [esp + 0x1c], 1
mov dword [esp + 0x178], 0x80000000
inc dword [esp + 0x30]
jmp 0x43e456
cmp dword [esp + 0x17c], 0
jne 0x43e456
lea eax, [esp + 0x17c]
sub eax, 4
dec dword [esp + 0x1c]
cmp dword [eax], 0
je 0x43e44a
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
add eax, dword [esp + 0x1c]
mov edx, dword [esp + ecx*4 + 0x134]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x44], eax
dec eax
mov dword [esp + 0x58], edx
mov dword [esp + 0x40], eax
mov dword [esp + 0x34], eax
mov eax, dword [esp + ecx*4 + 0x174]
mov dword [esp + 0x8c], edx
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x8c]
mul dword [esp + 0x88]
mov dword [esp + 0x84], eax
mov dword [esp + 0x80], edx
mov esi, dword [esp + 0x40]
mov ecx, dword [esp + 0x84]
shl esi, 2
mov eax, dword [esp + 0x80]
mov edx, dword [esp + 0x1c]
mov dword [esp + esi + 0x1f8], ecx
dec edx
mov dword [esp + esi + 0x1f4], eax
je 0x43e551
mov ebx, esi
lea ebp, [esp + edx*4 + 0x174]
lea edi, [esp + esi + 0x2f4]
xor eax, eax
std
mov ecx, edx
rep stosd dword es:[edi], eax
cld
mov eax, dword [esp + 0x40]
sub eax, edx
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x58]
mov ecx, dword [ebp]
mov dword [esp + 0x7c], eax
mov dword [esp + 0x78], ecx
mov eax, dword [esp + 0x7c]
mul dword [esp + 0x78]
mov dword [esp + 0x74], eax
mov dword [esp + 0x70], edx
mov edx, dword [esp + 0x74]
lea ecx, [esp + ebx + 0x1f4]
mov eax, dword [ecx]
add eax, edx
mov dword [ecx], eax
cmp eax, edx
mov eax, 1
adc eax, 0xffffffff
sub ebx, 4
add eax, dword [esp + 0x70]
sub ebp, 4
mov dword [esp + ebx + 0x1f4], eax
lea eax, [esp + 0x174]
cmp ebp, eax
jne 0x43e4fb
mov eax, dword [esp + 0x34]
dec dword [esp + 0x34]
mov dword [esp + eax*4 + 0x2f4], 0
js 0x43e58e
mov ebx, dword [esp + 0x34]
mov edx, dword [esp + 0x34]
shl ebx, 2
inc edx
xor eax, eax
mov ecx, edx
std
lea edi, [esp + ebx + 0x1f4]
rep stosd dword es:[edi], eax
lea edi, [esp + ebx + 0x2f4]
mov ecx, edx
cld
std
rep stosd dword es:[edi], eax
cld
mov eax, dword [esp + 0x10]
dec eax
je 0x43e644
mov edi, dword [esp + 0x1c]
lea ecx, [esp + eax*4 + 0x134]
add eax, edi
shl eax, 2
mov dword [esp + 0x54], eax
test edi, edi
je 0x43e62d
mov ebx, dword [esp + 0x54]
lea ebp, [esp + edi*4 + 0x174]
mov eax, dword [ecx]
mov edx, dword [ebp]
mov dword [esp + 0x6c], eax
mov dword [esp + 0x68], edx
mov eax, dword [esp + 0x6c]
mul dword [esp + 0x68]
mov dword [esp + 0x64], eax
mov dword [esp + 0x60], edx
mov edx, dword [esp + 0x64]
mov eax, dword [esp + ebx + 0x1f4]
add eax, edx
mov dword [esp + ebx + 0x1f4], eax
cmp eax, edx
mov edx, 1
mov eax, dword [esp + ebx + 0x1f0]
adc edx, 0xffffffff
add edx, dword [esp + 0x60]
add eax, edx
mov dword [esp + ebx + 0x1f0], eax
cmp eax, edx
mov eax, 1
adc eax, 0xffffffff
sub ebx, 4
sub ebp, 4
add dword [esp + ebx + 0x2f0], eax
lea eax, [esp + 0x174]
cmp ebp, eax
jne 0x43e5bc
sub ecx, 4
lea eax, [esp + 0x134]
sub dword [esp + 0x54], 4
cmp ecx, eax
jne 0x43e5ad
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x10], eax
add dword [esp + 0x24], ecx
lea edx, [esp + eax*4 + 0x134]
mov ecx, dword [esp + eax*4 + 0x1f4]
mov dword [edx], ecx
xor ecx, ecx
cmp dword [esp + 0x40], ecx
je 0x43e692
add ecx, dword [esp + esi + 0x2f4]
mov eax, dword [esp + esi + 0x1f4]
add eax, ecx
mov dword [esp + esi + 0x134], eax
cmp eax, ecx
mov ecx, 1
adc ecx, 0xffffffff
sub esi, 4
jne 0x43e66c
cmp dword [edx], 0
jne 0x43e6a3
sub edx, 4
dec dword [esp + 0x10]
cmp dword [edx], 0
je 0x43e697
cmp dword [esp + 0x138], 0
jle 0x43e6de
shl dword [esp + 0x138], 1
dec dword [esp + 0x24]
cmp dword [esp + 0x10], 2
jb 0x43e6de
lea ecx, [esp + 0x13c]
mov eax, dword [esp + 0x10]
dec eax
mov edx, dword [ecx]
add ecx, 4
shr edx, 0x1f
or dword [ecx - 8], edx
shl dword [ecx - 4], 1
dec eax
jne 0x43e6cc
mov eax, dword [esp + 0x10]
cmp dword [esp + eax*4 + 0x134], 0
jne 0x43e6f0
dec dword [esp + 0x10]
test byte [esp + 0x382], 0x40
jne 0x43e808
mov edx, dword [esp + 0x24]
add edx, 0x432
cmp edx, 0x35
jle 0x43e714
mov edx, 0x35
jmp 0x43e71c
test edx, edx
jl 0x43ea32
mov eax, edx
xor ecx, ecx
sar eax, 5
and edx, 0x1f
mov edi, 1
cmp ecx, edx
adc edi, 0xffffffff
lea ebx, [eax + edi]
cmp dword [esp + 0x10], ebx
jb 0x43e808
mov dword [esp + 0x10], ebx
test edi, edi
je 0x43e752
mov esi, 1
mov cl, 0x1f
sub cl, dl
shl esi, cl
jmp 0x43e763
cmp dword [esp + ebx*4 + 0x138], 0
mov esi, 1
jl 0x43e763
xor esi, esi
test ebx, ebx
je 0x43e7f6
lea edx, [esp + ebx*4 + 0x134]
mov eax, dword [edx]
add eax, esi
mov dword [edx], eax
cmp esi, eax
jbe 0x43e7d1
lea eax, [esp + ebx*4 + 0x130]
dec ebx
mov dword [esp + 0x134], 0
mov dword [esp + 0x10], ebx
cmp dword [eax], 0xffffffff
jne 0x43e7a4
sub eax, 4
dec dword [esp + 0x10]
cmp dword [eax], 0xffffffff
je 0x43e798
cmp dword [esp + 0x10], 0
je 0x43e7b8
mov eax, dword [esp + 0x10]
inc dword [esp + eax*4 + 0x134]
jmp 0x43e808
mov dword [esp + 0x10], 1
mov dword [esp + 0x138], 0x80000000
inc dword [esp + 0x24]
jmp 0x43e808
test edi, edi
je 0x43e7e3
lea ecx, [esi*2]
dec ecx
not ecx
and ecx, eax
mov dword [edx], ecx
cmp dword [edx], 0
jne 0x43e808
sub edx, 4
dec dword [esp + 0x10]
cmp dword [edx], 0
je 0x43e7e8
jmp 0x43e808
mov dword [esp + 0x10], esi
add dword [esp + 0x24], esi
shl esi, 0x1f
mov dword [esp + 0x138], esi
cmp dword [esp + 0x24], 0x400
jg 0x43ea32
cmp dword [esp + 0x24], 0xfffffc02
jg 0x43e84e
cmp dword [esp + 0x24], 0xfffffbcf
jl 0x43ea32
test byte [esp + 0x383], 0x10
jne 0x43ea32
test byte [esp + 0x381], 0x40
je 0x43e84e
or dword [esp + 0x14], 0x9000000
cmp dword [esp + 0x10], 2
mov esi, 0
adc esi, 0xffffffff
and esi, dword [esp + 0x13c]
cmp dword [esp + 0x24], 0xfffffc02
jle 0x43e89b
shr esi, 0xb
mov eax, dword [esp + 0x138]
shl eax, 0x15
mov edx, dword [esp + 0x24]
or esi, eax
add edx, 0x3fe
shl edx, 0x14
mov eax, dword [esp + 0x138]
and eax, 0x7ffff800
shr eax, 0xb
or edx, eax
jmp 0x43e8d9
mov ebx, 0xfffffc0e
sub ebx, dword [esp + 0x24]
cmp ebx, 0x20
jl 0x43e8bb
mov esi, dword [esp + 0x138]
sub ebx, 0x20
mov cl, bl
xor edx, edx
shr esi, cl
jmp 0x43e8d9
mov cl, bl
mov eax, dword [esp + 0x138]
shr esi, cl
mov cl, 0x20
mov edx, dword [esp + 0x138]
sub cl, bl
shl eax, cl
or esi, eax
mov cl, bl
shr edx, cl
test byte [esp + 0x14], 4
je 0x43e8e6
or edx, 0x80000000
mov dword [esp + 0xe0], edx
mov dword [esp + 0xdc], esi
jmp 0x43eaff
mov eax, dword [esp + 0x2b8]
xor esi, esi
mov dword [esp + 0x124], eax
cmp ecx, 2
mov dword [esp + 0x128], esi
fild qword [esp + 0x124]
fstp qword [esp + 0xd4]
jb 0x43e967
lea eax, [esp + 0x2bc]
dec ecx
jmp 0x43e934
fstp qword [esp + 0xd4]
fld qword [esp + 0xd4]
fmul qword [0x461448]
mov edi, dword [eax]
add eax, 4
dec ecx
mov dword [esp + 0x11c], edi
mov dword [esp + 0x120], esi
fild qword [esp + 0x11c]
faddp st(1)
jne 0x43e92d
fstp qword [esp + 0xd4]
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x114], edx
mov dword [esp + 0x118], 0
fld qword [eax*8 + 0x461400]
fmul qword [esp + 0xd4]
fild qword [esp + 0x114]
faddp st(1)
fstp qword [esp + 0xd4]
cmp dword [esp + 0x18], 0
jge 0x43e9bb
fld qword [esp + 0xd4]
mov eax, 0x461400
mov ecx, dword [esp + 0x18]
shl ecx, 3
sub eax, ecx
fdiv qword [eax]
jmp 0x43e9ef
jle 0x43e9f6
cmp dword [esp + 0x3c], 0
mov eax, dword [esp + 0x18]
fld qword [eax*8 + 0x461400]
fmul qword [esp + 0xd4]
je 0x43e9ef
fstp qword [esp + 0xd4]
mov eax, dword [esp + 0x3c]
fld qword [eax*8 + 0x461400]
fmul qword [esp + 0xd4]
fstp qword [esp + 0xd4]
mov eax, dword [esp + 0xd8]
mov ecx, dword [esp + 0xd4]
test byte [esp + 0x14], 4
mov dword [esp + 0xe0], eax
mov dword [esp + 0xdc], ecx
je 0x43eaff
fld qword [esp + 0xd4]
fchs
fstp qword [esp + 0xdc]
jmp 0x43eaff
test byte [esp + 0x14], 0x20
je 0x43ea9d
test byte [esp + 0x14], 4
je 0x43ea54
mov eax, dword [0x4611e4]
mov ecx, dword [0x4611e0]
mov dword [esp + 0xf0], eax
jmp 0x43ea66
mov eax, dword [0x4611dc]
mov ecx, dword [0x4611d8]
mov dword [esp + 0xf0], eax
test byte [esp + 0x381], 0x40
mov dword [esp + 0xec], ecx
mov ecx, dword [esp + 0xec]
mov eax, dword [esp + 0xf0]
mov dword [esp + 0xe0], eax
mov dword [esp + 0xdc], ecx
je 0x43eaff
or dword [esp + 0x14], 0x9000000
jmp 0x43eaff
test byte [esp + 0x14], 4
je 0x43eab8
mov eax, dword [0x461204]
mov ecx, dword [0x461200]
mov dword [esp + 0xe8], eax
jmp 0x43eaca
mov eax, dword [0x4611fc]
mov ecx, dword [0x4611f8]
mov dword [esp + 0xe8], eax
test byte [esp + 0x381], 0x20
mov dword [esp + 0xe4], ecx
mov ecx, dword [esp + 0xe4]
mov eax, dword [esp + 0xe8]
mov dword [esp + 0xe0], eax
mov dword [esp + 0xdc], ecx
je 0x43eaff
or dword [esp + 0x14], 0x8000000
mov eax, dword [esp + 0x38c]
test eax, eax
je 0x43eb13
mov edi, dword [esp + 0x378]
mov dword [eax], edi
mov eax, dword [esp + 0x390]
test eax, eax
je 0x43eb27
mov ecx, dword [esp + 0x14]
shr ecx, 0x18
mov dword [eax], ecx
fld qword [esp + 0xdc]
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x364
ret