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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xfc
mov eax, dword [0x4e3a20]
xor eax, esp
mov dword [esp + 0xf8], eax
lea eax, [ecx + 0x148]
mov dword [esp + 0x4c], eax
push ebx
mov ebx, dword [ecx]
push esi
mov eax, dword [ebx]
mov dword [esp + 0x7c], eax
lea eax, [edx*8 + 0x5c]
add eax, edx
mov dword [esp + 0x5c], ecx
mov esi, dword [ecx + eax*8 + 0x38]
lea eax, [ecx + eax*8]
mov dword [esp + 0x10], eax
movzx eax, byte [eax + 0x24]
mov dword [esp + 0x1c], edx
lea ecx, [eax + eax*4]
mov eax, dword [esp + 0x5c]
shl ecx, 4
mov eax, dword [eax + 4]
add eax, 8
add eax, ecx
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0x2c], eax
mov eax, dword [eax + 0x30]
mov edx, dword [ecx + 0x44]
push edi
mov edi, dword [ebx + 8]
mov dword [esp + 0x34], eax
xor eax, eax
mov dword [esp + 0x50], ebx
mov dword [esp + 0x64], edi
mov dword [esp + 0x28], esi
test edx, edx
jle 0x4750c8
add ecx, 0x48
jmp 0x4750b0
mov ebx, dword [esp + 0x34]
cmp dword [ecx], ebx
mov ebx, dword [esp + 0x50]
je 0x47532c
inc eax
add ecx, 4
cmp eax, edx
jl 0x4750b0
xorps xmm0, xmm0
movlpd qword [esp + 0x78], xmm0
mov edx, dword [esp + 0x7c]
mov ecx, dword [esp + 0x78]
mov eax, dword [esp + 0x14]
not ecx
and ecx, dword [ebp + 8]
not edx
and edx, dword [ebp + 0xc]
mov dword [eax + 0x40], ecx
mov ecx, dword [esp + 0x60]
mov dword [eax + 0x44], edx
mov eax, dword [ecx + 0x18]
mov edx, dword [ecx + 0x1c]
mov ecx, dword [esp + 0x20]
call fcn.004b9b50
and eax, 1
test byte [esi + 0x24], 0x40
mov dword [esp + 0x3c], eax
je 0x47511f
mov eax, dword [esp + 0x60]
mov dword [esp + 0x40], 1
test byte [eax + 0x22], 0x20
je 0x475127
mov dword [esp + 0x40], 0
mov esi, dword [edi + 0x18]
mov ecx, dword [esi + 0x6c]
mov dword [esp + 0x74], ecx
lea eax, [ecx + 1]
mov dword [esi + 0x6c], eax
lea eax, [ecx - 1]
test ecx, eax
jne 0x47517f
mov eax, dword [esi]
mov edx, dword [esi + 0x70]
mov dword [esp + 0x4c], eax
lea eax, [ecx*8 + 4]
mov ecx, dword [esp + 0x4c]
push eax
mov dword [esp + 0x20], edx
call fcn.0040a980
add esp, 4
mov dword [esp + 0x54], eax
test eax, eax
jne 0x475178
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x4c]
call fcn.0040a6d0
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x74]
mov dword [esi + 0x70], eax
mov eax, dword [esi + 0x70]
test eax, eax
je 0x47518d
mov dword [eax + ecx*4], 0xffffffff
mov esi, dword [esp + 0x14]
or eax, 0xffffffff
sub eax, ecx
mov dword [esi + 0x10], eax
mov dword [esi + 0xc], eax
mov ecx, dword [edi + 0x18]
mov dword [esp + 0x24], eax
mov edx, dword [ecx + 0x6c]
mov dword [esp + 0x74], ecx
lea eax, [edx + 1]
mov dword [ecx + 0x6c], eax
lea eax, [edx - 1]
mov dword [esp + 0x68], edx
test edx, eax
jne 0x475200
mov eax, dword [ecx + 0x70]
mov ecx, dword [ecx]
mov dword [esp + 0x4c], eax
lea eax, [edx*8 + 4]
mov edx, dword [esp + 0x4c]
push eax
mov dword [esp + 0x20], ecx
call fcn.0040a980
add esp, 4
mov dword [esp + 0x54], eax
test eax, eax
jne 0x4751f5
mov edx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x1c]
call fcn.0040a6d0
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x68]
mov dword [ecx + 0x70], eax
mov eax, dword [ecx + 0x70]
test eax, eax
je 0x47520e
mov dword [eax + edx*4], 0xffffffff
or eax, 0xffffffff
sub eax, edx
cmp byte [esi + 0x24], 0
mov dword [esp + 0x8c], eax
mov dword [esi + 0x18], eax
jbe 0x47528c
mov eax, dword [esp + 0x30]
test byte [eax + 0x24], 8
je 0x47528c
mov eax, dword [ebx + 0x48]
inc eax
mov dword [ebx + 0x48], eax
mov dword [esi], eax
mov ecx, dword [edi + 0x20]
mov dword [esp + 0x54], eax
mov eax, dword [edi + 0x18]
mov dword [esp + 0x1c], ecx
cmp dword [eax + 0x54], ecx
jg 0x475258
mov ecx, edi
call fcn.00427ca0
test eax, eax
jne 0x47528c
mov ecx, dword [esp + 0x1c]
mov eax, dword [edi + 4]
inc dword [edi + 0x20]
mov edx, dword [esp + 0x54]
lea ecx, [ecx + ecx*4]
mov word [eax + ecx*4], 0x19
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov edx, dword [esp + 0x30]
mov eax, dword [edx + 0x28]
mov dword [esp + 0x78], eax
test al, 4
je 0x475390
mov eax, dword [edx + 0x1c]
mov ecx, dword [edi + 0x20]
mov dword [esp + 0x20], eax
mov eax, dword [edx + 0x18]
mov dword [esp + 0x54], eax
mov eax, dword [edi + 0x18]
mov dword [esp + 0x1c], ecx
cmp dword [eax + 0x54], ecx
jg 0x4752cb
mov ecx, edi
call fcn.00427ca0
test eax, eax
jne 0x4752ff
mov ecx, dword [esp + 0x1c]
mov eax, dword [edi + 4]
inc dword [edi + 0x20]
mov edx, dword [esp + 0x20]
lea ecx, [ecx + ecx*4]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x54]
mov word [eax + ecx*4], 0x14
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov edx, dword [edi + 0x20]
mov eax, dword [edi + 0x18]
mov dword [esp + 0x1c], edx
cmp dword [eax + 0x54], edx
jg 0x47534a
mov ecx, edi
call fcn.00427ca0
test eax, eax
je 0x475346
mov edx, 1
mov dword [esi + 0x2c], edx
mov byte [esi + 0x25], 0x10
mov ecx, esi
jmp 0x47564e
xor ecx, ecx
bts ecx, eax
xor edx, edx
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
cmovae edx, ecx
jmp 0x4750d9
mov edx, dword [esp + 0x1c]
mov eax, dword [edi + 4]
inc dword [edi + 0x20]
mov ebx, dword [esp + 0x20]
lea ecx, [edx + edx*4]
mov dword [eax + ecx*4 + 4], ebx
mov ebx, dword [esp + 0x24]
mov dword [eax + ecx*4 + 8], ebx
mov ebx, dword [esp + 0x50]
mov word [eax + ecx*4], 0x16
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov dword [esi + 0x2c], edx
mov byte [esi + 0x25], 0x10
mov ecx, esi
jmp 0x47564e
mov ecx, dword [esp + 0x28]
mov edx, dword [ecx + 0x24]
test edx, 0x400
je 0x475699
movzx edx, word [ecx + 0x28]
inc dword [ebx + 0x64]
lea eax, [edx + 2]
mov dword [esp + 0x24], eax
mov eax, dword [ebx + 0x3c]
mov dword [esp + 0x18], eax
mov eax, dword [ebx + 0x38]
mov dword [esp + 0x10], edx
cmp dword [esp + 0x24], eax
jg 0x4753dd
mov eax, dword [esp + 0x18]
add eax, 2
add eax, edx
mov dword [ebx + 0x3c], eax
mov eax, dword [ebx + 0x38]
sub eax, dword [esp + 0x24]
mov dword [ebx + 0x38], eax
jmp 0x4753f3
mov eax, dword [ebx + 0x48]
lea edi, [eax + 1]
mov dword [esp + 0x18], edi
lea edi, [edx + 2]
add eax, edi
mov edi, dword [esp + 0x64]
mov dword [ebx + 0x48], eax
mov eax, dword [esi + 0xc]
xor esi, esi
mov dword [esp + 0x20], eax
test edx, edx
jle 0x475456
mov edi, edx
mov eax, dword [ecx + 0x2c]
mov edx, dword [eax + esi*4]
test edx, edx
je 0x47544d
mov eax, dword [esp + 0x18]
add eax, 2
add eax, esi
test byte [edx + 0x12], 1
mov ecx, ebx
push eax
je 0x47543c
push dword [esp + 0x40]
push esi
push dword [esp + 0x20]
call fcn.00474240
mov eax, dword [esp + 0x24]
add esp, 0x10
mov eax, dword [eax + 0x10]
mov dword [esp + 0x20], eax
jmp 0x475449
mov edx, dword [edx]
mov edx, dword [edx + 0x10]
call fcn.0043e270
add esp, 4
mov ecx, dword [esp + 0x28]
inc esi
cmp esi, edi
jl 0x475402
mov edi, dword [esp + 0x64]
mov eax, dword [ecx + 0x18]
mov esi, dword [edi + 0x20]
mov dword [esp + 0x1c], eax
mov eax, dword [edi + 0x18]
cmp dword [eax + 0x54], esi
jg 0x475473
mov ecx, edi
call fcn.00427ca0
test eax, eax
jne 0x4754a9
mov eax, dword [edi + 4]
inc dword [edi + 0x20]
mov edx, dword [esp + 0x1c]
lea ecx, [esi + esi*4]
mov esi, dword [esp + 0x18]
mov word [eax + ecx*4], 0x19
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], esi
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
jmp 0x4754ad
mov esi, dword [esp + 0x18]
mov ecx, dword [edi + 0x20]
mov eax, dword [edi + 0x18]
mov dword [esp + 0x1c], ecx
cmp dword [eax + 0x54], ecx
jg 0x4754cb
mov ecx, edi
call fcn.00427ca0
test eax, eax
jne 0x4754fb
mov ecx, dword [esp + 0x1c]
mov eax, dword [edi + 4]
inc dword [edi + 0x20]
lea ecx, [ecx + ecx*4]
lea ecx, [eax + ecx*4]
mov eax, dword [esp + 0x10]
mov dword [ecx + 4], eax
lea eax, [esi + 1]
mov word [ecx], 0x19
mov byte [ecx + 3], 0
mov dword [ecx + 8], eax
mov dword [ecx + 0xc], 0
mov dword [ecx + 0x10], 0
mov esi, dword [esp + 0x28]
mov edx, dword [edi + 0x20]
cmp byte [esi + 0x1c], 0
mov eax, 0xfffffffe
mov ecx, 0xfffffff5
cmovne eax, ecx
mov dword [esp + 0x54], eax
mov eax, dword [esi + 0x20]
mov dword [esp + 0x74], eax
mov eax, dword [edi + 0x18]
mov dword [esp + 0x1c], edx
cmp dword [eax + 0x54], edx
jg 0x475540
mov ecx, edi
call fcn.00427ca0
test eax, eax
je 0x47553c
mov edx, 1
jmp 0x475578
mov edx, dword [esp + 0x1c]
mov eax, dword [edi + 4]
inc dword [edi + 0x20]
mov ebx, dword [esp + 0x34]
lea ecx, [edx + edx*4]
mov dword [eax + ecx*4 + 4], ebx
mov ebx, dword [esp + 0x20]
mov dword [eax + ecx*4 + 8], ebx
mov ebx, dword [esp + 0x18]
mov dword [eax + ecx*4 + 0xc], ebx
mov ebx, dword [esp + 0x50]
mov word [eax + ecx*4], 0xe
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 0x10], 0
push dword [esp + 0x54]
mov ecx, edi
push dword [esp + 0x78]
call fcn.00428530
mov byte [esi + 0x1c], 0
xor esi, esi
add esp, 8
cmp dword [esp + 0x10], esi
jle 0x4755cf
mov ebx, dword [esp + 0x28]
mov edi, dword [esp + 0x14]
mov edi, edi
cmp esi, 0x10
jge 0x4755c7
mov ax, word [ebx + 0x1e]
mov cx, si
shr ax, cl
test al, 1
je 0x4755c0
mov edx, dword [ebx + 0x2c]
mov ecx, edi
mov edx, dword [edx + esi*4]
call fcn.00474130
inc esi
cmp esi, dword [esp + 0x10]
jl 0x4755a0
mov ebx, dword [esp + 0x50]
mov edi, dword [esp + 0x64]
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x34]
mov esi, dword [esp + 0x18]
push dword [esp + 0x24]
mov byte [ecx + 0x25], 0x97
mov dword [ecx + 0x28], eax
mov eax, dword [edi + 0x20]
mov dword [ecx + 0x2c], eax
mov edx, esi
mov ecx, ebx
call fcn.0043cab0
mov eax, dword [esp + 0x28]
add esp, 4
cmp eax, dword [ebx + 0x38]
jle 0x475607
mov dword [ebx + 0x38], eax
mov dword [ebx + 0x3c], esi
dec dword [ebx + 0x64]
lea ecx, [ebx + 0x80]
mov esi, 0xa
mov edx, dword [ecx]
test edx, edx
je 0x475644
mov eax, dword [ecx - 4]
cmp eax, dword [ebx + 0x64]
jle 0x475644
cmp byte [ecx - 6], 0
je 0x47563e
mov al, byte [ebx + 0x13]
cmp al, 8
jae 0x47563a
movzx eax, al
mov dword [ebx + eax*4 + 0x18], edx
inc byte [ebx + 0x13]
mov byte [ecx - 6], 0
mov dword [ecx], 0
add ecx, 0x14
dec esi
jne 0x475615
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x58]
mov edx, dword [eax + 0xc]
mov esi, dword [eax + 0x14]
mov dword [esp + 0x1c], edx
test edx, edx
jle 0x4766ac
test byte [esi + 0x14], 6
jne 0x476698
mov eax, dword [esp + 0x14]
mov ecx, dword [esi + 0x28]
and ecx, dword [eax + 0x40]
mov edi, dword [esp + 0x14]
mov eax, dword [esi + 0x2c]
and eax, dword [edi + 0x44]
or ecx, eax
mov ecx, edi
je 0x47666c
mov eax, dword [esp + 0x60]
mov byte [eax + 0x27], 1
jmp 0x476698
mov eax, edx
and eax, 0x100
je 0x475740
test dl, 5
je 0x475740
mov eax, dword [ecx + 0x2c]
mov ecx, ebx
mov edx, dword [eax]
inc dword [ebx + 0x48]
mov eax, dword [ebx + 0x48]
push eax
push dword [esp + 0x40]
mov dword [esp + 0x24], eax
push 0
push esi
call fcn.00474240
mov edx, dword [esp + 0x2c]
add esp, 0x10
mov dword [esp + 0x30], eax
cmp eax, edx
je 0x4756e7
mov ecx, ebx
call fcn.0043f590
mov eax, dword [esp + 0x30]
mov esi, dword [esi + 0x10]
push esi
push eax
mov edx, 0x26
mov ecx, edi
call fcn.00427e40
push dword [esp + 0x38]
mov edx, 0x43
push esi
push dword [esp + 0x44]
mov ecx, edi
call fcn.00427d20
mov esi, dword [esp + 0x44]
add esp, 0x14
mov edx, esi
push 1
mov ecx, ebx
call fcn.0043cab0
mov edx, dword [esp + 0x38]
add esp, 4
mov ecx, ebx
push esi
push 0xffffffffffffffff
call fcn.0043c960
mov ecx, dword [esp + 0x1c]
add esp, 8
mov byte [ecx + 0x25], 0x9c
jmp 0x47564e
test eax, eax
je 0x47592d
test dl, 2
je 0x47592d
xor eax, eax
mov dword [esp + 0x44], 0x9c
mov dword [esp + 0x4c], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x38], eax
mov dword [esp + 0x10], eax
test dl, 0x20
je 0x475789
mov eax, dword [ecx + 0x2c]
mov dword [esp + 0x20], 1
mov eax, dword [eax]
mov dword [esp + 0x10], eax
test dl, 0x10
je 0x47579e
mov eax, dword [ecx + 0x2c]
mov ecx, dword [esp + 0x20]
mov ecx, dword [eax + ecx*4]
mov dword [esp + 0x38], ecx
jmp 0x4757a0
xor ecx, ecx
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x4757ba
mov eax, dword [esp + 0x10]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x10], ecx
jmp 0x4757be
mov ecx, dword [esp + 0x10]
test ecx, ecx
je 0x47582b
mov esi, dword [ecx]
lea eax, [esp + 0x1c]
mov edx, dword [esi + 0x10]
push eax
mov ecx, ebx
mov dword [esp + 0x2c], 0x3d3b3c3e
call fcn.0043e090
mov ecx, dword [esp + 0x68]
add esp, 4
mov edi, eax
movzx eax, byte [esi]
push edi
push dword [esp + 0x28]
movzx edx, byte [esp + eax - 0x20]
push dword [esp + 0x3c]
call fcn.00427d20
add esp, 0xc
mov edx, edi
push 1
mov ecx, ebx
call fcn.0043cab0
mov edx, dword [esp + 0x20]
add esp, 4
mov ecx, ebx
call fcn.0043f590
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
mov ecx, esi
call fcn.00474130
mov edi, dword [esp + 0x64]
jmp 0x47584c
push dword [esp + 0x24]
mov ecx, 0x66
push dword [esp + 0x38]
test eax, eax
mov edx, 0x69
cmovne edx, ecx
mov ecx, edi
call fcn.00427e40
add esp, 8
mov eax, dword [esp + 0x38]
test eax, eax
je 0x4758b1
mov esi, dword [eax]
inc dword [ebx + 0x48]
mov eax, dword [ebx + 0x48]
mov edx, dword [esi + 0x10]
push eax
mov ecx, ebx
mov dword [esp + 0x50], eax
call fcn.0043e270
mov al, byte [esi]
add esp, 4
cmp al, 0x52
je 0x47588c
cmp al, 0x50
je 0x47588c
mov ecx, dword [esp + 0x3c]
xor eax, eax
test ecx, ecx
setne al
lea eax, [eax*2 + 0x50]
jmp 0x47589e
mov ecx, dword [esp + 0x3c]
xor eax, eax
test ecx, ecx
sete al
lea eax, [eax*2 + 0x51]
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0x38]
mov ecx, esi
mov dword [esp + 0x44], eax
call fcn.00474130
cmp dword [esp + 0x3c], 0
mov ecx, dword [edi + 0x20]
sete al
add al, 8
cmp dword [esp + 0x44], 0x9c
mov byte [esi + 0x25], al
mov eax, dword [esp + 0x34]
mov dword [esi + 0x28], eax
mov dword [esi + 0x2c], ecx
je 0x47564a
inc dword [ebx + 0x48]
mov esi, dword [ebx + 0x48]
push esi
push eax
mov edx, 0x64
mov ecx, edi
call fcn.00427e40
mov edx, dword [esp + 0x3c]
push esi
push 0xffffffffffffffff
mov ecx, ebx
call fcn.0043c960
mov edx, dword [esp + 0x54]
push esi
push dword [esp + 0x38]
mov ecx, edi
push dword [esp + 0x64]
call fcn.00427d20
mov ecx, dword [edi + 4]
add esp, 0x1c
test ecx, ecx
je 0x47564a
mov eax, dword [edi + 0x20]
lea eax, [eax + eax*4]
mov byte [ecx + eax*4 - 0x11], 0x6b
jmp 0x47564a
test edx, 0x200
je 0x475e78
movzx eax, word [ecx + 0x18]
mov esi, dword [esi + 8]
mov dword [esp + 0x48], esi
mov esi, dword [esp + 0x60]
mov dword [esp + 0x10], eax
test byte [esi + 0x22], 1
mov eax, dword [ecx + 0x1c]
mov dword [esp + 0x38], 0
mov dword [esp + 0x24], 0
mov byte [esp + 0x2f], 0
mov byte [esp + 0x5c], 0
mov byte [esp + 0x6f], 0
mov dword [esp + 0x30], eax
je 0x475994
cmp byte [esi + 0x24], 0
mov esi, dword [esp + 0x10]
jle 0x475998
cmp word [eax + 0x32], si
jbe 0x475998
mov byte [esp + 0x5c], 1
mov eax, 1
jmp 0x47599a
mov esi, dword [esp + 0x10]
xor eax, eax
movzx esi, si
mov dword [esp + 0x20], esi
test dl, 0x20
je 0x4759bc
mov eax, dword [ecx + 0x2c]
mov eax, dword [eax + esi*4]
mov dword [esp + 0x38], eax
lea eax, [esi + 1]
mov dword [esp + 0x20], eax
mov eax, 1
test dl, 0x10
je 0x475a18
cmp dword [esp + 0x38], 0
mov eax, dword [ecx + 0x2c]
mov ecx, dword [esp + 0x20]
mov eax, dword [eax + ecx*4]
mov dword [esp + 0x24], eax
mov eax, 1
mov dword [esp + 0x20], eax
jne 0x475a18
mov edx, dword [esp + 0x30]
mov eax, dword [edx + 4]
movsx eax, word [eax + esi*2]
test eax, eax
js 0x475a14
lea ecx, [eax + eax*2]
mov eax, dword [edx + 0xc]
mov edx, dword [esp + 0x5c]
mov eax, dword [eax + 4]
movzx edx, dl
cmp byte [eax + ecx*8 + 0x14], 0
mov dword [esp + 0x1c], 1
cmove edx, dword [esp + 0x1c]
mov dword [esp + 0x5c], edx
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x14]
lea ecx, [esp + 0x44]
push ecx
push eax
push dword [esp + 0x44]
mov ecx, ebx
call fcn.004744b0
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x50]
add esp, 0xc
test eax, eax
je 0x475a43
mov al, byte [esi + eax]
mov byte [esp + 0x2f], al
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x30]
movzx edx, word [eax + 0x32]
cmp cx, dx
jae 0x475b6b
mov eax, dword [eax + 0x1c]
xor ecx, ecx
cmp byte [esi + eax], cl
mov eax, dword [esp + 0x3c]
sete cl
cmp eax, ecx
je 0x475b74
mov ecx, dword [esp + 0x10]
test eax, eax
je 0x475a8b
cmp dx, cx
je 0x475b78
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x38]
test eax, eax
je 0x475aa5
test byte [eax + 0x12], 0x28
mov dword [esp + 0x4c], 0
je 0x475aad
mov dword [esp + 0x4c], 1
test edx, edx
je 0x475abf
test byte [edx + 0x12], 0x28
mov dword [esp + 0x20], 0
je 0x475ac7
mov dword [esp + 0x20], 1
test eax, eax
jne 0x475ad4
mov dword [esp + 0x68], eax
test cx, cx
je 0x475adc
mov dword [esp + 0x68], 1
mov ecx, esi
mov dword [esp + 0x10], ecx
test eax, eax
je 0x475b9e
mov eax, dword [eax]
mov ecx, dword [esp + 0x18]
mov eax, dword [eax + 0x10]
add ecx, esi
push ecx
mov edx, eax
mov ecx, ebx
mov dword [esp + 0x14], eax
call fcn.0043e270
mov ecx, dword [esp + 0x14]
add esp, 4
call fcn.0043b410
test eax, eax
je 0x475b2d
mov eax, dword [esp + 0x18]
push dword [esp + 0x70]
add eax, esi
push eax
mov edx, 0x4c
mov ecx, edi
call fcn.00427e40
add esp, 8
mov eax, dword [esp + 0x44]
test eax, eax
je 0x475bce
mov dl, byte [esi + eax]
mov ecx, dword [esp + 0x10]
call fcn.004399e0
cmp al, 0x62
mov eax, dword [esp + 0x44]
jne 0x475b51
mov byte [esi + eax], 0x62
mov dl, byte [esi + eax]
mov ecx, dword [esp + 0x10]
call fcn.0043b440
test eax, eax
je 0x475bce
mov eax, dword [esp + 0x44]
mov byte [esi + eax], 0x62
jmp 0x475bce
mov eax, dword [esp + 0x3c]
jmp 0x475a7e
mov ecx, dword [esp + 0x10]
mov bl, byte [esp + 0x5c]
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x38]
mov byte [esp + 0x6f], bl
mov ebx, dword [esp + 0x50]
mov dword [esp + 0x24], edx
mov dword [esp + 0x38], eax
mov byte [esp + 0x5c], 0
jmp 0x475a93
mov eax, dword [esp + 0x5c]
test al, al
je 0x475bd9
mov eax, dword [esp + 0x18]
add eax, esi
push eax
push 0
mov edx, 0x1c
mov ecx, edi
call fcn.00427e40
add esp, 8
mov dword [esp + 0x4c], 0
mov dword [esp + 0x68], 1
mov eax, dword [esp + 0x5c]
lea ecx, [esi + 1]
mov dword [esp + 0x10], ecx
push dword [esp + 0x44]
mov edx, dword [esp + 0x1c]
movzx eax, al
sub ecx, eax
push ecx
mov ecx, ebx
call fcn.00474180
push dword [esp + 0x18]
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 0x74]
push dword [esp + 0x24]
lea eax, [ecx + eax*2]
mov ecx, dword [esp + 0x4c]
push dword [esp + 0x80]
movzx edx, byte [ecx + eax*2 + 0x4ce298]
push dword [esp + 0x5c]
mov ecx, edi
call fcn.00428020
mov eax, dword [esp + 0x3c]
add esp, 0x18
test eax, eax
je 0x475cbf
mov eax, dword [eax]
mov edx, dword [esp + 0x18]
mov eax, dword [eax + 0x10]
lea edx, [esi + edx]
push 1
mov ecx, ebx
mov dword [esp + 0x14], eax
call fcn.0043cab0
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x14]
add esp, 4
add eax, esi
push eax
mov ecx, ebx
call fcn.0043e270
mov ecx, dword [esp + 0x14]
add esp, 4
call fcn.0043b410
test eax, eax
je 0x475c86
mov eax, dword [esp + 0x18]
push dword [esp + 0x70]
add eax, esi
push eax
mov edx, 0x4c
mov ecx, edi
call fcn.00427e40
add esp, 8
mov dl, byte [esp + 0x2f]
mov ecx, dword [esp + 0x10]
call fcn.004399e0
cmp al, 0x62
je 0x475ce6
mov dl, byte [esp + 0x2f]
mov ecx, dword [esp + 0x10]
call fcn.0043b440
test eax, eax
jne 0x475ce6
mov edx, dword [esp + 0x18]
lea eax, [esp + 0x2f]
push eax
push 1
lea edx, [esi + edx]
mov ecx, ebx
call fcn.00474180
jmp 0x475ce3
cmp byte [esp + 0x6f], 0
je 0x475ce7
mov eax, dword [esp + 0x18]
add eax, esi
push eax
push 0
mov edx, 0x1c
mov ecx, edi
call fcn.00427e40
mov dword [esp + 0x28], 0
add esp, 8
inc esi
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x80]
call fcn.0040a6d0
mov ecx, dword [esp + 0x14]
mov eax, dword [edi + 0x20]
mov dword [ecx + 0x2c], eax
test esi, esi
je 0x475d2c
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x20]
push esi
push dword [esp + 0x1c]
movzx edx, byte [ecx + eax*2 + str.qonp]
push dword [esp + 0x78]
mov ecx, edi
push dword [esp + 0x54]
call fcn.00428020
add esp, 0x10
mov edx, dword [esp + 0x38]
mov ecx, dword [esp + 0x14]
call fcn.00474130
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x14]
call fcn.00474130
cmp dword [esp + 0x40], 0
jne 0x475e32
mov eax, dword [esp + 0x30]
mov ecx, dword [eax + 0xc]
test byte [ecx + 0x2c], 0x20
jne 0x475d9c
inc dword [ebx + 0x48]
mov esi, dword [ebx + 0x48]
push esi
push dword [esp + 0x4c]
mov edx, 0x6d
mov ecx, edi
call fcn.00427e40
mov edx, dword [esp + 0x3c]
push esi
push 0xffffffffffffffff
mov ecx, ebx
call fcn.0043c960
push esi
push dword [esp + 0x48]
mov edx, 0x3f
mov ecx, edi
call fcn.00427e40
add esp, 0x18
jmp 0x475e32
mov edx, dword [esp + 0x48]
cmp dword [esp + 0x34], edx
je 0x475e36
call fcn.00444160
movzx edx, word [eax + 0x32]
mov ecx, ebx
mov dword [esp + 0x20], eax
call fcn.0043f5d0
mov ecx, eax
mov eax, dword [esp + 0x20]
xor edx, edx
xor esi, esi
mov dword [esp + 0x40], ecx
cmp dx, word [eax + 0x32]
jae 0x475e12
mov ebx, eax
lea eax, [esi + ecx]
mov ecx, dword [esp + 0x30]
push eax
mov eax, dword [ebx + 4]
mov dx, word [eax + esi*2]
call fcn.00444180
cwde
push eax
push dword [esp + 0x50]
mov edx, 0x2e
mov ecx, edi
call fcn.00427d20
movzx eax, word [ebx + 0x32]
mov ecx, dword [esp + 0x4c]
inc esi
add esp, 0xc
cmp esi, eax
jl 0x475dd4
mov ebx, dword [esp + 0x50]
mov eax, dword [esp + 0x20]
movzx eax, word [eax + 0x32]
push eax
push ecx
push dword [esp + 0x94]
mov edx, 0x41
push dword [esp + 0x40]
mov ecx, edi
call fcn.00428020
add esp, 0x10
mov edx, dword [esp + 0x48]
mov esi, dword [esp + 0x28]
mov ecx, dword [esp + 0x14]
test dword [esi + 0x24], 0x1000
je 0x475e4d
mov byte [ecx + 0x25], 0x9c
jmp 0x475e5a
cmp dword [esp + 0x3c], 0
sete al
add al, 8
mov byte [ecx + 0x25], al
mov dword [ecx + 0x28], edx
mov al, byte [esi + 0x26]
and al, 1
mov byte [ecx + 0x26], al
test byte [esi + 0x24], 0xf
jne 0x47564e
mov byte [ecx + 0x27], 1
jmp 0x47564e
test edx, 0x2000
je 0x476621
mov eax, dword [ebx + 0x44]
inc dword [ebx + 0x48]
mov dword [esp + 0x74], eax
inc eax
mov dword [ebx + 0x44], eax
mov eax, dword [ebx + 0x48]
mov ecx, edi
mov dword [esp + 0x18], 0
mov dword [esp + 0x4c], eax
mov dword [esp + 0x10], 0
mov dword [esp + 0x70], 0
call fcn.004280d0
mov esi, dword [esp + 0x28]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x30]
xor edx, edx
mov ecx, dword [eax + 0x10]
mov eax, dword [esi + 0x2c]
mov dword [esp + 0x48], edx
mov eax, dword [eax]
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x1c], eax
mov eax, dword [eax + 0xc]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x3c], 0
mov byte [eax + 0x25], 0x12
mov dword [eax + 0x28], edx
mov eax, dword [esp + 0x60]
mov dword [esp + 0x38], ecx
mov al, byte [eax + 0x29]
cmp al, 1
jbe 0x475ff3
mov ecx, dword [esp + 0x80]
movzx eax, al
sub eax, dword [esp + 0x20]
dec eax
mov dword [esp + 0x40], eax
lea edx, [eax + eax*4]
shl edx, 4
add edx, 0x58
call fcn.0040a900
mov ecx, eax
mov dword [esp + 0x44], ecx
test ecx, ecx
jne 0x475f4d
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xf8]
xor ecx, esp
call fcn.004a2eda
mov esp, ebp
pop ebp
ret
mov edx, dword [esp + 0x40]
mov esi, dword [esp + 0x30]
mov al, dl
inc al
movzx eax, al
mov dword [ecx + 4], eax
mov dword [ecx], eax
mov eax, dword [esp + 0x60]
lea edi, [ecx + 8]
mov ecx, 0x14
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [eax + 4]
add ecx, 8
mov dword [esp + 0x68], ecx
cmp edx, 1
jl 0x475fbd
mov ebx, dword [esp + 0x44]
mov eax, dword [esp + 0x14]
add ebx, 0x58
add eax, 0x6c
mov dword [esp + 0x40], eax
movzx eax, byte [eax]
mov edi, ebx
lea esi, [eax + eax*4]
mov eax, dword [esp + 0x40]
shl esi, 4
add esi, ecx
mov ecx, 0x14
add eax, 0x48
add ebx, 0x50
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x40], eax
dec edx
jne 0x475f90
mov ebx, dword [esp + 0x50]
mov ecx, dword [esp + 0x38]
mov edi, dword [esp + 0x64]
mov edx, dword [esp + 0x60]
test byte [edx + 0x22], 8
jne 0x47603c
test byte [ecx + 0x2c], 0x20
jne 0x476000
inc dword [ebx + 0x48]
mov eax, dword [ebx + 0x48]
push eax
push 0
mov edx, 0x1c
mov ecx, edi
mov dword [esp + 0x18], eax
call fcn.00427e40
add esp, 8
jmp 0x476032
mov eax, dword [esp + 0x60]
mov eax, dword [eax + 4]
mov dword [esp + 0x44], eax
jmp 0x475fc5
call fcn.00444160
mov esi, eax
mov eax, dword [ebx + 0x44]
mov edx, 0x37
lea ecx, [eax + 1]
mov dword [ebx + 0x44], ecx
movzx ecx, word [esi + 0x32]
push ecx
push eax
mov ecx, edi
mov dword [esp + 0x18], eax
call fcn.00427e40
add esp, 8
mov edx, esi
mov ecx, ebx
call fcn.00428600
inc dword [ebx + 0x48]
mov eax, dword [ebx + 0x48]
mov dword [esp + 0x70], eax
push dword [esp + 0x4c]
mov edx, 0x19
push 0
mov ecx, edi
call fcn.00427e40
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x60]
add esp, 8
mov edx, dword [eax + 0xc]
cmp edx, 1
jle 0x47617e
xor ecx, ecx
mov dword [esp + 0x40], ecx
test edx, edx
jle 0x47617e
mov edi, dword [esp + 0x80]
xor esi, esi
xor ebx, ebx
mov eax, dword [eax + 0x14]
add eax, esi
mov edx, dword [eax]
cmp eax, dword [esp + 0x1c]
je 0x4760cb
test byte [edx + 4], 1
jne 0x4760cb
test byte [eax + 0x14], 0x12
jne 0x4760cb
mov ebx, 0xfff
test word [eax + 0x12], bx
mov ebx, dword [esp + 0x48]
je 0x4760cb
push 0
push 0
mov ecx, edi
call fcn.0043a660
push eax
mov edx, ebx
mov ecx, edi
call fcn.0043a190
mov ecx, dword [esp + 0x4c]
mov ebx, eax
add esp, 0xc
mov dword [esp + 0x48], ebx
mov eax, dword [esp + 0x58]
inc ecx
add esi, 0x30
mov dword [esp + 0x40], ecx
cmp ecx, dword [eax + 0xc]
jl 0x476081
mov edi, dword [esp + 0x64]
test ebx, ebx
mov ebx, dword [esp + 0x50]
je 0x476182
mov ecx, dword [ebx]
mov edx, 0x30
call fcn.0040a900
mov esi, eax
test esi, esi
je 0x47611c
push 0x30
push 0
push esi
call fcn.004a9520
add esp, 0xc
or eax, 0xffffffff
mov byte [esi], 0x48
mov word [esi + 0x22], ax
mov dword [esi + 0x18], 1
mov eax, dword [ebx]
mov dword [esp + 0x40], eax
test esi, esi
jne 0x476144
xor edx, edx
mov ecx, eax
call fcn.0043a520
mov edx, dword [esp + 0x48]
mov ecx, dword [esp + 0x40]
call fcn.0043a520
mov edx, esi
mov dword [esp + 0x48], edx
jmp 0x476186
mov edx, dword [esp + 0x48]
mov dword [esi + 0x10], edx
mov eax, dword [edx + 4]
and eax, 0x100
or dword [esi + 4], eax
mov ecx, esi
call fcn.00439d50
mov eax, dword [ebx]
mov eax, dword [eax + 0x64]
cmp dword [esi + 0x18], eax
jle 0x476176
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push ebx
call fcn.0040ccf0
add esp, 0xc
mov edx, esi
mov dword [esp + 0x48], edx
jmp 0x476186
xor edx, edx
jmp 0x476186
mov edx, dword [esp + 0x48]
mov ecx, dword [esp + 0x5c]
xor esi, esi
mov dword [esp + 0x30], esi
cmp dword [ecx + 0xc], esi
jle 0x476519
lea esp, [esp]
lea eax, [esi + esi*2]
shl eax, 4
add eax, dword [ecx + 0x14]
mov ecx, dword [esp + 0x34]
cmp dword [eax + 8], ecx
je 0x4761c1
mov ecx, 0x200
test word [eax + 0x12], cx
je 0x476501
mov eax, dword [eax]
xor ecx, ecx
mov dword [esp + 0x68], ecx
test edx, edx
je 0x4761d8
test byte [eax + 4], 1
jne 0x4761d8
mov dword [edx + 0xc], eax
mov eax, edx
push dword [esp + 0x74]
mov edx, dword [esp + 0x48]
push 0xf0
push 0
push 0
push eax
mov ecx, ebx
call fcn.00479d20
mov edx, eax
add esp, 0x14
mov dword [esp + 0x88], edx
test edx, edx
je 0x476501
mov eax, dword [esp + 0x14]
push 0
movzx ecx, byte [eax + 0x24]
push ecx
push dword [esp + 0x28]
lea ecx, [edx + 0x2e0]
mov edx, dword [esp + 0x50]
push ecx
mov ecx, ebx
call fcn.00474dc0
mov eax, dword [esp + 0x70]
add esp, 0x10
test byte [eax + 0x22], 8
jne 0x47642b
mov eax, dword [esp + 0x5c]
mov eax, dword [eax + 0xc]
dec eax
cmp dword [esp + 0x30], eax
mov eax, 0xffffffff
cmove esi, eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x40], esi
test byte [eax + 0x2c], 0x20
jne 0x47628e
push 0
push dword [esp + 0x74]
mov edx, eax
push dword [esp + 0x3c]
mov ecx, ebx
push 0xffffffffffffffff
call fcn.0043cd50
push esi
push eax
push 0
push dword [esp + 0x2c]
mov edx, 0x7f
mov ecx, edi
call fcn.00428020
add esp, 0x20
mov dword [esp + 0x68], eax
jmp 0x47642b
mov ecx, eax
call fcn.00444160
movzx edx, word [eax + 0x32]
mov ecx, dword [ebx + 0x38]
mov dword [esp + 0x84], eax
mov eax, dword [ebx + 0x3c]
mov dword [esp + 0x24], edx
mov dword [esp + 0x28], eax
cmp edx, ecx
jg 0x4762c2
add eax, edx
sub ecx, edx
mov dword [ebx + 0x38], ecx
mov ecx, dword [esp + 0x28]
mov dword [ebx + 0x3c], eax
jmp 0x4762d1
mov eax, dword [ebx + 0x48]
lea ecx, [eax + 1]
add eax, edx
mov dword [esp + 0x28], ecx
mov dword [ebx + 0x48], eax
xor esi, esi
test edx, edx
jle 0x476318
mov edi, dword [esp + 0x24]
jmp 0x4762e0
mov edx, dword [esp + 0x38]
lea eax, [ecx + esi]
push 0
push eax
mov eax, dword [esp + 0x8c]
push dword [esp + 0x3c]
mov eax, dword [eax + 4]
mov ecx, ebx
movsx eax, word [eax + esi*2]
push eax
call fcn.0043cd50
mov ecx, dword [esp + 0x38]
inc esi
add esp, 0x10
cmp esi, edi
jl 0x4762e0
mov edi, dword [esp + 0x64]
mov edx, dword [esp + 0x24]
mov esi, dword [esp + 0x40]
test esi, esi
je 0x476340
push edx
push dword [esp + 0x2c]
mov edx, 0x42
push 0
push dword [esp + 0x1c]
mov ecx, edi
call fcn.00428020
add esp, 0x10
mov dword [esp + 0x68], eax
test esi, esi
js 0x476409
mov eax, dword [edi + 0x18]
mov esi, dword [edi + 0x20]
cmp dword [eax + 0x54], esi
jg 0x47635c
mov ecx, edi
call fcn.00427ca0
test eax, eax
jne 0x476392
mov eax, dword [edi + 4]
inc dword [edi + 0x20]
mov edx, dword [esp + 0x28]
lea ecx, [esi + esi*4]
mov esi, dword [esp + 0x24]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x70]
mov word [eax + ecx*4], 0x30
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 8], esi
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
jmp 0x476396
mov esi, dword [esp + 0x24]
mov ecx, dword [edi + 0x20]
mov eax, dword [edi + 0x18]
mov dword [esp + 0x84], ecx
cmp dword [eax + 0x54], ecx
jg 0x4763ba
mov ecx, edi
call fcn.00427ca0
test eax, eax
jne 0x4763ee
mov ecx, dword [esp + 0x84]
mov eax, dword [edi + 4]
inc dword [edi + 0x20]
mov edx, dword [esp + 0x10]
lea ecx, [ecx + ecx*4]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x70]
mov word [eax + ecx*4], 0x6b
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
cmp dword [esp + 0x40], 0
je 0x47640d
mov ecx, dword [edi + 4]
test ecx, ecx
je 0x47640d
mov eax, dword [edi + 0x20]
lea eax, [eax + eax*4]
mov byte [ecx + eax*4 - 0x11], 0x10
jmp 0x47640d
mov esi, dword [esp + 0x24]
mov edx, dword [esp + 0x28]
push esi
mov ecx, ebx
call fcn.0043cab0
add esp, 4
cmp esi, dword [ebx + 0x38]
jle 0x47642b
mov eax, dword [esp + 0x28]
mov dword [ebx + 0x38], esi
mov dword [ebx + 0x3c], eax
mov eax, dword [edi + 0x18]
mov esi, dword [edi + 0x20]
cmp dword [eax + 0x54], esi
jg 0x476441
mov ecx, edi
call fcn.00427ca0
test eax, eax
jne 0x476475
mov eax, dword [edi + 4]
inc dword [edi + 0x20]
mov edx, dword [esp + 0x4c]
lea ecx, [esi + esi*4]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x54]
mov word [eax + ecx*4], 0x11
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0x68]
test eax, eax
je 0x476498
mov edx, dword [edi + 0x20]
cmp edx, eax
jbe 0x47648e
lea ecx, [eax + eax*4]
mov eax, dword [edi + 4]
mov dword [eax + ecx*4 + 8], edx
mov ecx, dword [edi + 0x20]
mov eax, dword [edi + 0x18]
dec ecx
mov dword [eax + 0x58], ecx
mov edx, dword [esp + 0x88]
mov eax, dword [esp + 0x3c]
cmp byte [edx + 0x27], 0
mov esi, dword [esp + 0x30]
mov ecx, 1
cmovne eax, ecx
mov ecx, dword [edx + 0x318]
mov dword [esp + 0x3c], eax
test dword [ecx + 0x24], 0x200
je 0x4764f2
test esi, esi
je 0x4764d3
mov eax, dword [esp + 0x18]
cmp dword [ecx + 0x1c], eax
jne 0x4764f2
mov eax, dword [esp + 0x38]
test byte [eax + 0x2c], 0x20
je 0x4764e9
mov eax, dword [ecx + 0x1c]
mov eax, dword [eax + 0x38]
and al, 3
cmp al, 2
je 0x4764f2
mov eax, dword [ecx + 0x1c]
mov dword [esp + 0x18], eax
jmp 0x4764fa
mov dword [esp + 0x18], 0
mov ecx, edx
call fcn.0047a740
mov eax, dword [esp + 0x5c]
mov edx, dword [esp + 0x48]
inc esi
mov dword [esp + 0x30], esi
mov ecx, eax
cmp esi, dword [eax + 0xc]
jl 0x4761a0
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x14]
mov dword [esi + 0x30], eax
test eax, eax
je 0x47652f
mov eax, dword [esp + 0x74]
mov dword [esi + 8], eax
mov edx, dword [esp + 0x48]
test edx, edx
je 0x47654a
mov ecx, dword [esp + 0x80]
mov dword [edx + 0xc], 0
call fcn.0043a520
mov edx, dword [edi + 0x20]
mov eax, dword [esp + 0x78]
cmp edx, eax
jbe 0x47655f
lea ecx, [eax + eax*4]
mov eax, dword [edi + 4]
mov dword [eax + ecx*4 + 4], edx
mov eax, dword [esi + 0xc]
mov ecx, dword [edi + 0x20]
mov dword [esp + 0x88], eax
mov eax, dword [edi + 0x18]
mov dword [esp + 0x78], ecx
cmp dword [eax + 0x54], ecx
jg 0x476587
mov ecx, edi
call fcn.00427ca0
test eax, eax
jne 0x4765be
mov ecx, dword [esp + 0x78]
mov eax, dword [edi + 4]
inc dword [edi + 0x20]
mov edx, dword [esp + 0x88]
lea ecx, [ecx + ecx*4]
mov word [eax + ecx*4], 0x10
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov edx, dword [edi + 0x18]
or eax, 0xffffffff
sub eax, dword [esp + 0x54]
mov dword [esp + 0x78], eax
js 0x4765e3
mov ecx, dword [edx + 0x70]
test ecx, ecx
je 0x4765e3
mov ebx, dword [esp + 0x78]
mov eax, dword [edi + 0x20]
mov dword [ecx + ebx*4], eax
mov ebx, dword [esp + 0x50]
mov eax, dword [edi + 0x20]
dec eax
mov dword [edx + 0x58], eax
mov eax, dword [esp + 0x60]
cmp byte [eax + 0x29], 1
jbe 0x476604
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x80]
call fcn.0040a6d0
cmp dword [esp + 0x3c], 0
mov ecx, esi
jne 0x47564e
mov edx, dword [esp + 0x1c]
call fcn.00474130
mov ecx, esi
jmp 0x47564e
test byte [esp + 0x78], 8
je 0x476633
mov byte [esi + 0x25], 0x9c
mov ecx, esi
jmp 0x47564e
mov ecx, dword [esp + 0x3c]
push dword [esp + 0x24]
mov al, byte [ecx + 0x4cba3c]
mov byte [esi + 0x25], al
mov eax, dword [esp + 0x38]
mov dword [esi + 0x28], eax
movzx edx, byte [ecx + 0x4cb15c]
push eax
mov ecx, edi
call fcn.00427e40
add esp, 8
inc eax
mov dword [esi + 0x2c], eax
mov byte [esi + 0x27], 1
mov ecx, esi
jmp 0x47564e
cmp dword [ecx], 0
mov eax, dword [esi]
je 0x476679
test byte [eax + 4], 1
je 0x476698
push 8
push dword [esp + 0x90]
mov edx, eax
mov ecx, ebx
call fcn.0043ea70
mov edx, dword [esp + 0x24]
add esp, 8
or byte [esi + 0x14], 4
mov ecx, edi
dec edx
add esi, 0x30
mov dword [esp + 0x1c], edx
test edx, edx
jg 0x475664
mov edi, dword [esp + 0x64]
mov esi, dword [esp + 0x58]
mov edx, dword [esi + 0xc]
mov eax, dword [esi + 0x14]
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], edx
test edx, edx
jle 0x4768e3
mov edx, 0x402
jmp 0x4766d0
test byte [eax + 0x14], 6
jne 0x4768c3
cmp word [eax + 0x12], dx
jne 0x4768c3
mov edx, dword [esp + 0x34]
cmp dword [eax + 8], edx
jne 0x4768be
cmp dword [ecx], 0
jne 0x4768be
mov ecx, dword [eax]
xor edi, edi
push edi
push 3
push dword [eax + 0xc]
mov dword [esp + 0x84], ecx
push edx
mov edx, esi
lea ecx, [esp + 0xa0]
call fcn.00470da0
mov esi, eax
add esp, 0x10
test esi, esi
je 0x476758
mov edx, dword [esi + 0x20]
mov ebx, dword [esi + 0x24]
mov ecx, edx
and ecx, dword [ebp + 8]
mov eax, ebx
and eax, dword [ebp + 0xc]
or ecx, eax
jne 0x476746
or edx, ebx
jne 0x476741
test byte [esi + 0x12], 2
jne 0x47675a
test edi, edi
cmove edi, esi
lea ecx, [esp + 0x90]
call fcn.00470af0
mov esi, eax
test esi, esi
jne 0x476723
mov esi, edi
test esi, esi
je 0x4768b2
test byte [esi + 0x14], 4
jne 0x4768b2
mov ebx, dword [esp + 0x80]
test ebx, ebx
je 0x4767b0
cmp byte [ebx + 0x40], 0
jne 0x4768b2
cmp byte [ebx + 0xf2], 0
mov edi, 0x30
je 0x4767b5
cmp di, word [ebx + 0xf0]
jbe 0x4767a0
inc dword [ebx + 0x100]
jmp 0x4767b5
mov edi, dword [ebx + 0x108]
test edi, edi
jne 0x4767f2
inc dword [ebx + 0x104]
mov edi, 0x30
cmp dword [0x4e5c08], 0
je 0x476822
mov eax, dword [0x4e7600]
test eax, eax
je 0x4767d1
push eax
call dword [0x4e5c5c]
add esp, 4
lea edx, [esp + 0x20]
mov ecx, edi
call fcn.0040a240
mov eax, dword [0x4e7600]
test eax, eax
je 0x47681c
push eax
call dword [0x4e5c64]
mov edi, dword [esp + 0x24]
jmp 0x476830
mov eax, dword [edi]
inc dword [ebx + 0xf4]
mov dword [ebx + 0x108], eax
inc dword [ebx + 0xfc]
mov eax, dword [ebx + 0xf4]
cmp eax, dword [ebx + 0xf8]
jle 0x47683f
mov dword [ebx + 0xf8], eax
jmp 0x47683f
mov edi, dword [esp + 0x20]
jmp 0x476833
push 0x30
call dword [0x4e5c2c]
mov edi, eax
mov dword [esp + 0x24], edi
add esp, 4
test edi, edi
jne 0x476843
test ebx, ebx
je 0x47683f
mov byte [ebx + 0x40], 1
test edi, edi
je 0x4768b2
mov eax, dword [esi]
mov ebx, dword [esp + 0x50]
movq xmm0, qword [eax]
movq qword [edi], xmm0
movq xmm0, qword [eax + 8]
movq qword [edi + 8], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [edi + 0x10], xmm0
movq xmm0, qword [eax + 0x18]
movq qword [edi + 0x18], xmm0
movq xmm0, qword [eax + 0x20]
movq qword [edi + 0x20], xmm0
movq xmm0, qword [eax + 0x28]
mov eax, dword [esp + 0x78]
movq qword [edi + 0x28], xmm0
mov eax, dword [eax + 0xc]
push 8
push dword [esp + 0x90]
mov edx, edi
mov ecx, ebx
mov dword [edi + 0xc], eax
call fcn.0043ea70
mov ecx, dword [esp + 0x88]
add esp, 8
mov edx, edi
call fcn.0040a6d0
jmp 0x4768b6
mov ebx, dword [esp + 0x50]
mov eax, dword [esp + 0x10]
mov esi, dword [esp + 0x58]
mov edx, 0x402
mov ecx, dword [esp + 0x1c]
dec ecx
add eax, 0x30
mov dword [esp + 0x1c], ecx
test ecx, ecx
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x10], eax
jg 0x4766d0
mov edi, dword [esp + 0x64]
mov edx, dword [esp + 0x14]
mov eax, dword [edx]
mov dword [esp + 0x54], eax
test eax, eax
je 0x476b8a
mov eax, dword [edi + 0x20]
mov dword [edx + 0x1c], eax
mov eax, dword [edi + 0x18]
mov ecx, dword [edi + 0x20]
mov dword [esp + 0x84], ecx
mov dword [esp + 0x88], eax
cmp dword [eax + 0x54], ecx
jg 0x476af0
mov ecx, dword [eax + 0x54]
test ecx, ecx
je 0x476923
add ecx, ecx
jmp 0x476928
mov ecx, 0x33
mov esi, dword [eax]
lea edx, [ecx + ecx*4]
mov ecx, dword [edi + 4]
shl edx, 2
xor eax, eax
mov dword [esp + 0x78], edx
mov dword [esp + 0x18], ecx
cmp byte [esi + 0x40], al
jne 0x476a99
test ecx, ecx
jne 0x476a37
cmp byte [esi + 0xf2], al
je 0x476967
movzx eax, word [esi + 0xf0]
cmp edx, eax
jle 0x4769bc
inc dword [esi + 0x100]
lea eax, [edx - 1]
cmp eax, 0x7ffffefe
ja 0x476a2b
cmp dword [0x4e5c08], 0
je 0x476a0d
mov eax, dword [0x4e7600]
test eax, eax
je 0x476995
push eax
call dword [0x4e5c5c]
add esp, 4
mov ecx, dword [esp + 0x78]
lea edx, [esp + 0x1c]
call fcn.0040a240
mov eax, dword [0x4e7600]
test eax, eax
je 0x476a03
push eax
call dword [0x4e5c64]
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x1c], ecx
jmp 0x476a1a
mov ecx, dword [esi + 0x108]
mov dword [esp + 0x18], ecx
test ecx, ecx
jne 0x4769d2
inc dword [esi + 0x104]
jmp 0x476967
mov eax, dword [ecx]
inc dword [esi + 0xf4]
mov dword [esi + 0x108], eax
inc dword [esi + 0xfc]
mov eax, dword [esi + 0xf4]
cmp eax, dword [esi + 0xf8]
jle 0x476a9f
mov dword [esi + 0xf8], eax
jmp 0x476a9f
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x18], ecx
jmp 0x476a1d
push edx
call dword [0x4e5c2c]
mov ecx, eax
mov dword [esp + 0x1c], eax
add esp, 4
test ecx, ecx
jne 0x476aa7
mov byte [esi + 0x40], 1
jmp 0x476a9f
xor ecx, ecx
mov dword [esp + 0x18], ecx
mov byte [esi + 0x40], 1
jmp 0x476a9f
cmp ecx, dword [esi + 0x10c]
jb 0x476a87
cmp ecx, dword [esi + 0x110]
jae 0x476a87
movzx eax, word [esi + 0xf0]
cmp edx, eax
jle 0x476a9f
mov ecx, esi
call fcn.0040a900
mov dword [esp + 0x78], eax
test eax, eax
je 0x476a99
movzx edx, word [esi + 0xf0]
push edx
push dword [esp + 0x1c]
push eax
call fcn.004a5f50
mov edx, dword [esp + 0x24]
add esp, 0xc
mov ecx, esi
call fcn.0040a6d0
mov eax, dword [esp + 0x78]
jmp 0x476a99
push edx
push ecx
call fcn.0040a8a0
add esp, 8
test eax, eax
jne 0x476a99
mov byte [esi + 0x40], 1
mov ecx, eax
mov dword [esp + 0x18], ecx
test ecx, ecx
je 0x476b24
mov esi, dword [esp + 0x88]
mov eax, dword [esi]
cmp ecx, dword [eax + 0x10c]
jb 0x476ac9
cmp ecx, dword [eax + 0x110]
jae 0x476ac9
movzx edx, word [eax + 0xf0]
jmp 0x476ad9
push ecx
call dword [0x4e5c38]
mov ecx, dword [esp + 0x1c]
add esp, 4
mov edx, eax
mov eax, 0xcccccccd
mul edx
shr edx, 4
mov dword [esi + 0x54], edx
mov dword [edi + 4], ecx
mov ecx, dword [esp + 0x84]
mov eax, dword [edi + 4]
inc dword [edi + 0x20]
mov edx, dword [esp + 0x54]
lea ecx, [ecx + ecx*4]
mov word [eax + ecx*4], 0x19
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], 1
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, ebx
call fcn.0043ce00
mov edx, dword [esp + 0x58]
xor edi, edi
mov esi, dword [edx + 0x14]
cmp dword [edx + 0xc], edi
jle 0x476b86
mov eax, edx
jmp 0x476b40
test byte [esi + 0x14], 6
mov edx, dword [esp + 0x14]
jne 0x476b7b
mov ecx, dword [esi + 0x28]
mov eax, dword [esi + 0x2c]
and ecx, dword [edx + 0x40]
and eax, dword [edx + 0x44]
or ecx, eax
jne 0x476b77
mov edx, dword [esi]
push 8
push dword [esp + 0x90]
mov ecx, ebx
call fcn.0043ea70
mov edx, dword [esp + 0x1c]
add esp, 8
or byte [esi + 0x14], 4
mov eax, dword [esp + 0x58]
inc edi
add esi, 0x30
cmp edi, dword [eax + 0xc]
jl 0x476b40
jmp 0x476b8a
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x104]
mov eax, dword [edx + 0x40]
mov edx, dword [edx + 0x44]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.004a2eda
mov esp, ebp
pop ebp
ret