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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x8c
push ebx
push esi
mov esi, dword [ecx]
lea eax, [ecx + 0x148]
mov dword [esp + 0x64], eax
push edi
lea edi, [ecx + 0x2e0]
mov dword [esp + 0x5c], ecx
mov eax, dword [esi]
mov dword [esp + 0x84], eax
lea eax, [edx + edx*4]
shl eax, 4
add edi, eax
mov ebx, dword [esi + 8]
mov dword [esp + 0x20], edx
mov dword [esp + 0x40], esi
mov dword [esp + 0x64], ebx
mov eax, dword [edi + 0x40]
mov dword [esp + 0x4c], eax
movzx eax, byte [edi + 0x2c]
mov dword [esp + 0x74], edi
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]
mov dword [esp + 0x30], eax
xor eax, eax
test edx, edx
jle 0x4aa9f9
add ecx, 0x48
mov esi, dword [esp + 0x30]
cmp dword [ecx], esi
mov esi, dword [esp + 0x40]
je 0x4aac11
inc eax
add ecx, 4
cmp eax, edx
jl 0x4aa9e1
xorps xmm0, xmm0
movlpd qword [esp + 0x78], xmm0
mov edx, dword [esp + 0x7c]
mov ecx, dword [esp + 0x78]
not ecx
not edx
and ecx, dword [ebp + 8]
and edx, dword [ebp + 0xc]
mov dword [edi + 0x48], ecx
mov ecx, dword [esp + 0x5c]
mov dword [edi + 0x4c], edx
mov eax, dword [ecx + 0x18]
mov edx, dword [ecx + 0x1c]
mov ecx, dword [esp + 0x20]
call fcn.00525ef0
and eax, 1
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x4c]
test byte [eax + 0x24], 0x40
je 0x4aaa50
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x28], 1
test byte [eax + 0x22], 0x20
je 0x4aaa58
mov dword [esp + 0x28], 0
mov ecx, dword [ebx + 0x18]
mov dword [esp + 0x14], ecx
mov edx, dword [ecx + 0x6c]
mov dword [esp + 0x38], edx
lea eax, [edx + 1]
mov dword [ecx + 0x6c], eax
lea eax, [edx - 1]
test edx, eax
jne 0x4aaa95
lea eax, [edx*8 + 4]
mov edx, dword [ecx + 0x70]
mov ecx, dword [ecx]
push 0
push eax
call fcn.00444ee0
mov ecx, dword [esp + 0x1c]
add esp, 8
mov edx, dword [esp + 0x38]
mov dword [ecx + 0x70], eax
mov eax, dword [ecx + 0x70]
test eax, eax
je 0x4aaaa3
mov dword [eax + edx*4], 0xffffffff
or eax, 0xffffffff
sub eax, edx
mov dword [edi + 0x10], eax
mov dword [edi + 0xc], eax
mov edx, dword [ebx + 0x18]
mov dword [esp + 0x18], eax
mov dword [esp + 0x38], edx
mov ecx, dword [edx + 0x6c]
mov dword [esp + 0x14], ecx
lea eax, [ecx + 1]
mov dword [edx + 0x6c], eax
lea eax, [ecx - 1]
test ecx, eax
jne 0x4aaaf3
mov edx, dword [edx + 0x70]
lea eax, [ecx*8 + 4]
mov ecx, dword [esp + 0x38]
push 0
push eax
mov ecx, dword [ecx]
call fcn.00444ee0
mov edx, dword [esp + 0x40]
add esp, 8
mov ecx, dword [esp + 0x14]
mov dword [edx + 0x70], eax
mov eax, dword [edx + 0x70]
test eax, eax
je 0x4aab01
mov dword [eax + ecx*4], 0xffffffff
or eax, 0xffffffff
sub eax, ecx
cmp byte [edi + 0x2c], 0
mov dword [esp + 0x90], eax
mov dword [edi + 0x18], eax
jbe 0x4aab7f
mov eax, dword [esp + 0x2c]
test byte [eax + 0x24], 8
je 0x4aab7f
mov eax, dword [esi + 0x48]
inc eax
mov dword [esi + 0x48], eax
mov dword [edi], eax
mov ecx, dword [ebx + 0x20]
mov dword [esp + 0x38], eax
mov eax, dword [ebx + 0x18]
mov dword [esp + 0x14], ecx
cmp dword [eax + 0x54], ecx
jg 0x4aab4b
mov ecx, ebx
call fcn.00463310
test eax, eax
jne 0x4aab7f
mov ecx, dword [esp + 0x14]
mov eax, dword [ebx + 4]
lea ecx, [ecx + ecx*4]
inc dword [ebx + 0x20]
mov edx, dword [esp + 0x38]
mov word [eax + ecx*4], 0x17
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 + 0x2c]
mov eax, dword [edx + 0x28]
mov dword [esp + 0x78], eax
test al, 4
je 0x4aac6b
mov eax, dword [edx + 0x1c]
mov esi, dword [ebx + 0x20]
mov dword [esp + 0x20], eax
mov eax, dword [edx + 0x18]
mov dword [esp + 0x14], eax
mov eax, dword [ebx + 0x18]
cmp dword [eax + 0x54], esi
jg 0x4aabb6
mov ecx, ebx
call fcn.00463310
test eax, eax
jne 0x4aabea
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x20]
mov edx, dword [esp + 0x20]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x14]
mov word [eax + ecx*4], 0x11
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 eax, dword [ebx + 0x18]
mov esi, dword [ebx + 0x20]
cmp dword [eax + 0x54], esi
jg 0x4aac2b
mov ecx, ebx
call fcn.00463310
test eax, eax
je 0x4aac2b
mov esi, 1
mov byte [edi + 0x2d], 0xe
mov dword [edi + 0x34], esi
jmp 0x4abfb6
xor ecx, ecx
xor edx, edx
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
cmovae edx, ecx
jmp 0x4aaa0a
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x20]
mov edx, dword [esp + 0x20]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x18]
mov word [eax + ecx*4], 0x14
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 dword [edi + 0x34], esi
mov byte [edi + 0x2d], 0xe
jmp 0x4abfb6
mov ecx, dword [esp + 0x4c]
mov eax, dword [ecx + 0x24]
test eax, 0x400
je 0x4aaef1
movzx edx, word [ecx + 0x28]
mov ebx, dword [esi + 0x38]
inc dword [esi + 0x64]
mov dword [esp + 0x18], edx
lea eax, [edx + 2]
mov dword [esp + 0x10], eax
mov eax, dword [esi + 0x3c]
cmp dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x64]
mov dword [esp + 0x24], eax
jg 0x4aacb7
add eax, 2
add eax, edx
mov dword [esi + 0x3c], eax
mov eax, dword [esi + 0x38]
sub eax, dword [esp + 0x10]
mov dword [esi + 0x38], eax
jmp 0x4aaccd
mov eax, dword [esi + 0x48]
lea ebx, [eax + 1]
mov dword [esp + 0x24], ebx
lea ebx, [edx + 2]
add eax, ebx
mov ebx, dword [esp + 0x64]
mov dword [esi + 0x48], eax
mov eax, dword [edi + 0xc]
mov dword [esp + 0x20], eax
test edx, edx
jle 0x4aad2f
xor ebx, ebx
lea ebx, [ebx]
mov eax, dword [ecx + 0x30]
mov edx, dword [eax + ebx*4]
test edx, edx
je 0x4aad24
mov eax, dword [esp + 0x24]
mov ecx, esi
add eax, 2
add eax, ebx
test byte [edx + 0x12], 1
push eax
je 0x4aad13
push dword [esp + 0x40]
push ebx
push edi
call fcn.004aa390
mov eax, dword [edi + 0x10]
add esp, 0x10
mov dword [esp + 0x20], eax
jmp 0x4aad20
mov edx, dword [edx]
mov edx, dword [edx + 0x10]
call fcn.0047b190
add esp, 4
mov ecx, dword [esp + 0x4c]
inc ebx
cmp ebx, dword [esp + 0x18]
jl 0x4aace0
mov ebx, dword [esp + 0x64]
mov eax, dword [ecx + 0x18]
mov ecx, dword [ebx + 0x20]
mov dword [esp + 0x28], eax
mov eax, dword [ebx + 0x18]
mov dword [esp + 0x14], ecx
cmp dword [eax + 0x54], ecx
jg 0x4aad54
mov ecx, ebx
call fcn.00463310
test eax, eax
jne 0x4aad88
mov ecx, dword [esp + 0x14]
mov eax, dword [ebx + 4]
lea ecx, [ecx + ecx*4]
inc dword [ebx + 0x20]
mov edx, dword [esp + 0x28]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x24]
mov word [eax + ecx*4], 0x17
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 [ebx + 0x18]
mov ecx, dword [ebx + 0x20]
mov dword [esp + 0x14], ecx
cmp dword [eax + 0x54], ecx
jg 0x4aada6
mov ecx, ebx
call fcn.00463310
test eax, eax
jne 0x4aadda
mov ecx, dword [esp + 0x14]
mov eax, dword [ebx + 4]
lea ecx, [ecx + ecx*4]
inc dword [ebx + 0x20]
mov word [eax + ecx*4], 0x17
mov byte [eax + ecx*4 + 3], 0
lea ecx, [eax + ecx*4]
mov eax, dword [esp + 0x18]
mov dword [ecx + 0xc], 0
mov dword [ecx + 4], eax
mov eax, dword [esp + 0x24]
inc eax
mov dword [ecx + 0x10], 0
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x4c]
mov edx, 0xfffffff5
mov ecx, 0xfffffffe
cmp byte [eax + 0x1c], 0
mov eax, dword [eax + 0x20]
mov dword [esp + 0x38], eax
cmovne ecx, edx
mov eax, dword [ebx + 0x18]
mov edx, dword [ebx + 0x20]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x14], edx
cmp dword [eax + 0x54], edx
jg 0x4aae1f
mov ecx, ebx
call fcn.00463310
test eax, eax
je 0x4aae1b
mov edx, 1
jmp 0x4aae57
mov edx, dword [esp + 0x14]
mov eax, dword [ebx + 4]
lea ecx, [edx + edx*4]
inc dword [ebx + 0x20]
mov edi, dword [esp + 0x30]
mov dword [eax + ecx*4 + 4], edi
mov edi, dword [esp + 0x20]
mov dword [eax + ecx*4 + 8], edi
mov edi, dword [esp + 0x24]
mov dword [eax + ecx*4 + 0xc], edi
mov edi, dword [esp + 0x74]
mov word [eax + ecx*4], 0xc
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 0x10], 0
push dword [esp + 0x28]
mov ecx, ebx
push dword [esp + 0x3c]
call fcn.00463c30
mov eax, dword [esp + 0x54]
add esp, 8
cmp dword [esp + 0x18], 0
mov byte [eax + 0x1c], 0
jle 0x4aaeaf
xor esi, esi
mov ebx, eax
lea esp, [esp]
cmp esi, 0x10
jge 0x4aaea7
mov ax, word [ebx + 0x1e]
mov cx, si
shr ax, cl
test al, 1
je 0x4aaea0
mov edx, dword [ebx + 0x30]
mov ecx, edi
mov edx, dword [edx + esi*4]
call fcn.004aa260
inc esi
cmp esi, dword [esp + 0x18]
jl 0x4aae80
mov ebx, dword [esp + 0x64]
mov esi, dword [esp + 0x40]
mov eax, dword [esp + 0x30]
mov ecx, esi
push dword [esp + 0x10]
mov edx, dword [esp + 0x28]
mov byte [edi + 0x2d], 0x9a
mov dword [edi + 0x30], eax
mov eax, dword [ebx + 0x20]
mov dword [edi + 0x34], eax
call fcn.00479b00
mov eax, dword [esp + 0x14]
add esp, 4
cmp eax, dword [esi + 0x38]
jle 0x4aaee5
mov dword [esi + 0x38], eax
mov eax, dword [esp + 0x24]
mov dword [esi + 0x3c], eax
mov ecx, esi
call fcn.00479b60
jmp 0x4abfb6
mov edx, eax
and edx, 0x100
je 0x4aaf99
test al, 5
je 0x4aaf99
mov eax, dword [ecx + 0x30]
mov ecx, esi
mov edx, dword [eax]
inc dword [esi + 0x48]
mov eax, dword [esi + 0x48]
push eax
push dword [esp + 0x40]
mov dword [esp + 0x1c], eax
push 0
push edi
call fcn.004aa390
mov edx, dword [esp + 0x24]
add esp, 0x10
mov dword [esp + 0x18], eax
cmp eax, edx
je 0x4aaf3f
mov ecx, esi
call fcn.0047c350
mov eax, dword [esp + 0x18]
mov esi, dword [edi + 0x10]
mov edx, 0x26
push esi
push eax
mov ecx, ebx
call fcn.004634c0
push dword [esp + 0x20]
mov edx, 0x49
mov ecx, ebx
push esi
push dword [esp + 0x40]
call fcn.00463390
mov edx, dword [esp + 0x2c]
add esp, 0x14
mov ecx, dword [esp + 0x40]
push 1
call fcn.00479b00
mov edx, dword [esp + 0x34]
add esp, 4
mov ecx, dword [esp + 0x40]
push dword [esp + 0x18]
push 0xffffffffffffffff
call fcn.004799b0
add esp, 8
mov byte [edi + 0x2d], 0x9f
jmp 0x4abfb6
test edx, edx
je 0x4ab188
test al, 2
je 0x4ab188
xor esi, esi
mov dword [esp + 0x44], 0x9f
xor edx, edx
mov dword [esp + 0x38], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], esi
mov dword [esp + 0x2c], edx
test al, 0x20
je 0x4aafe5
mov eax, dword [ecx + 0x30]
mov dword [esp + 0x20], 1
mov edx, dword [eax]
mov eax, dword [ecx + 0x24]
mov dword [esp + 0x2c], edx
test al, 0x10
je 0x4aaff7
mov eax, dword [ecx + 0x30]
mov esi, dword [esp + 0x20]
mov esi, dword [eax + esi*4]
mov dword [esp + 0x1c], esi
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x4ab011
mov eax, edx
mov edx, esi
mov esi, eax
mov dword [esp + 0x2c], edx
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x1c], esi
test edx, edx
je 0x4ab083
mov esi, dword [edx]
lea eax, [esp + 0x14]
mov ecx, dword [esp + 0x40]
push eax
mov dword [esp + 0x14], 0x413f4042
mov edx, dword [esi + 0x10]
call fcn.0047b040
mov edx, dword [esp + 0x1c]
add esp, 4
mov edi, eax
mov ecx, ebx
movzx eax, byte [esi]
push edi
push edx
push dword [esp + 0x38]
movzx edx, byte [esp + eax - 0x34]
call fcn.00463390
mov ecx, dword [esp + 0x4c]
add esp, 0xc
mov edx, edi
push 1
call fcn.00479b00
mov ecx, dword [esp + 0x44]
add esp, 4
mov edx, dword [esp + 0x14]
call fcn.0047c350
mov edi, dword [esp + 0x74]
mov ecx, edi
mov edx, dword [esp + 0x2c]
call fcn.004aa260
mov esi, dword [esp + 0x1c]
jmp 0x4ab0a5
mov edx, dword [esp + 0x18]
test eax, eax
push edx
push dword [esp + 0x34]
mov ecx, 0x6a
mov edx, 0x6d
cmovne edx, ecx
mov ecx, ebx
call fcn.004634c0
add esp, 8
test esi, esi
je 0x4ab106
mov eax, dword [esp + 0x40]
mov esi, dword [esi]
inc dword [eax + 0x48]
mov ecx, dword [eax + 0x48]
mov edx, dword [esi + 0x10]
mov dword [esp + 0x38], ecx
push ecx
mov ecx, eax
call fcn.0047b190
mov al, byte [esi]
add esp, 4
cmp al, 0x52
je 0x4ab0e5
cmp al, 0x50
je 0x4ab0e5
mov ecx, dword [esp + 0x3c]
xor eax, eax
test ecx, ecx
setne al
lea eax, [eax*2 + 0x50]
jmp 0x4ab0f7
mov ecx, dword [esp + 0x3c]
xor eax, eax
test ecx, ecx
sete al
lea eax, [eax*2 + 0x51]
mov edx, dword [esp + 0x1c]
mov ecx, edi
mov dword [esp + 0x44], eax
call fcn.004aa260
cmp dword [esp + 0x3c], 0
mov ecx, dword [ebx + 0x20]
mov edx, dword [esp + 0x30]
sete al
add al, 7
mov dword [edi + 0x30], edx
cmp dword [esp + 0x44], 0x9f
mov byte [edi + 0x2d], al
mov dword [edi + 0x34], ecx
je 0x4abfb6
mov eax, dword [esp + 0x40]
mov ecx, ebx
inc dword [eax + 0x48]
mov esi, dword [eax + 0x48]
push esi
push edx
mov edx, 0x68
call fcn.004634c0
mov edx, dword [esp + 0x38]
mov ecx, dword [esp + 0x48]
push esi
push 0xffffffffffffffff
call fcn.004799b0
mov edx, dword [esp + 0x54]
mov ecx, ebx
push esi
push dword [esp + 0x2c]
push dword [esp + 0x50]
call fcn.00463390
mov ecx, dword [ebx + 4]
add esp, 0x1c
test ecx, ecx
je 0x4abfb6
mov eax, dword [ebx + 0x20]
lea eax, [eax + eax*4]
mov byte [ecx + eax*4 - 0x11], 0x53
jmp 0x4abfb6
test eax, 0x200
je 0x4ab790
mov esi, dword [edi + 8]
movzx edx, word [ecx + 0x18]
mov dword [esp + 0x58], esi
mov esi, dword [esp + 0x5c]
mov dword [esp + 0x1c], edx
mov edx, dword [ecx + 0x1c]
mov dword [esp + 0x50], 0
test byte [esi + 0x22], 1
mov esi, dword [esp + 0x40]
mov dword [esp + 0x54], 0
mov dword [esp + 0x10], 0
mov byte [esp + 0x37], 0
mov byte [esp + 0x44], 0
mov byte [esp + 0x63], 0
mov dword [esp + 0x18], edx
je 0x4ab203
mov ebx, dword [esp + 0x5c]
cmp byte [ebx + 0x24], 0
jle 0x4ab203
mov edi, dword [esp + 0x1c]
cmp word [edx + 0x2e], di
mov edi, dword [esp + 0x74]
jbe 0x4ab203
mov byte [esp + 0x44], 1
mov dword [esp + 0x10], 1
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x64]
movzx edx, dx
mov dword [esp + 0x24], edx
mov dword [esp + 0x20], edx
test al, 0x20
je 0x4ab236
mov eax, dword [ecx + 0x30]
mov dword [esp + 0x10], 1
mov eax, dword [eax + edx*4]
mov dword [esp + 0x50], eax
lea eax, [edx + 1]
mov dword [esp + 0x20], eax
mov eax, dword [ecx + 0x24]
mov dword [esp + 0x38], 0x100
test al, 0x10
je 0x4ab2df
mov eax, dword [ecx + 0x30]
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x10], 1
mov eax, dword [eax + ecx*4]
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x54], eax
test word [eax + 0x14], cx
je 0x4ab29f
mov eax, dword [esi + 0x48]
xor ecx, ecx
inc eax
mov dword [esi + 0x48], eax
mov dword [edi + 0x24], eax
push eax
mov eax, dword [esp + 0x1c]
mov eax, dword [eax + 0x1c]
cmp byte [edx + eax], 1
mov edx, 0x17
sete cl
xor ecx, dword [esp + 0x40]
push ecx
mov ecx, ebx
call fcn.004634c0
mov eax, dword [ebx + 0x20]
add esp, 8
mov edx, dword [esp + 0x24]
mov dword [edi + 0x28], eax
cmp dword [esp + 0x50], 0
jne 0x4ab2df
mov eax, dword [esp + 0x18]
mov eax, dword [eax + 4]
movsx eax, word [eax + edx*2]
test eax, eax
js 0x4ab2df
mov edx, dword [esp + 0x44]
lea ecx, [eax + eax*2]
mov eax, dword [esp + 0x18]
movzx edx, dl
mov dword [esp + 0x14], 1
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 4]
cmp byte [eax + ecx*8 + 0x14], 0
cmove edx, dword [esp + 0x14]
mov dword [esp + 0x44], edx
lea eax, [esp + 0x70]
mov edx, edi
push eax
push dword [esp + 0x14]
mov ecx, esi
push dword [esp + 0x44]
call fcn.004aa550
mov edx, dword [esp + 0x30]
add esp, 0xc
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x70]
test eax, eax
je 0x4ab30f
mov al, byte [edx + eax]
mov byte [esp + 0x37], al
mov eax, dword [edi + 0x10]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x18]
movzx ecx, word [eax + 0x2e]
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x1c]
cmp cx, word [esp + 0x20]
jae 0x4ab372
mov eax, dword [eax + 0x1c]
xor ecx, ecx
cmp byte [edx + eax], cl
mov eax, dword [esp + 0x3c]
sete cl
cmp eax, ecx
je 0x4ab34f
mov ecx, dword [esp + 0x1c]
test eax, eax
je 0x4ab378
cmp word [esp + 0x20], cx
jne 0x4ab378
mov bl, byte [esp + 0x44]
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x50]
mov byte [esp + 0x63], bl
mov ebx, dword [esp + 0x64]
mov dword [esp + 0x54], ecx
mov dword [esp + 0x50], eax
mov byte [esp + 0x44], 0
jmp 0x4ab380
mov eax, dword [esp + 0x3c]
jmp 0x4ab344
mov ecx, dword [esp + 0x54]
mov eax, dword [esp + 0x50]
test eax, eax
je 0x4ab392
test byte [eax + 0x12], 0x28
mov dword [esp + 0x48], 0
je 0x4ab39a
mov dword [esp + 0x48], 1
test ecx, ecx
je 0x4ab3ac
test byte [ecx + 0x12], 0x28
mov dword [esp + 0x20], 0
je 0x4ab3b4
mov dword [esp + 0x20], 1
test eax, eax
jne 0x4ab50d
cmp word [esp + 0x1c], ax
ja 0x4ab50d
mov dword [esp + 0x6c], eax
mov dword [esp + 0x1c], edx
cmp byte [esp + 0x44], 0
je 0x4ab402
mov eax, dword [esp + 0x10]
mov ecx, ebx
add eax, edx
mov edx, 0x1a
push eax
push 0
call fcn.004634c0
add esp, 8
mov dword [esp + 0x48], 0
mov dword [esp + 0x6c], 1
inc dword [esp + 0x1c]
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x1c]
push dword [esp + 0x70]
movzx eax, dl
mov edx, dword [esp + 0x14]
sub ecx, eax
push ecx
mov ecx, esi
call fcn.004aa2d0
mov ecx, dword [esp + 0x50]
push dword [esp + 0x24]
mov eax, dword [esp + 0x78]
push dword [esp + 0x1c]
push dword [esp + 0x3c]
lea eax, [ecx + eax*2]
mov ecx, dword [esp + 0x50]
push dword [esp + 0x6c]
movzx edx, byte [ecx + eax*2 + 0x585794]
mov ecx, ebx
call fcn.004636a0
mov eax, dword [esp + 0x6c]
add esp, 0x18
test eax, eax
je 0x4ab5dc
mov eax, dword [eax]
mov ecx, esi
push 1
mov eax, dword [eax + 0x10]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x28]
add eax, dword [esp + 0x14]
mov edx, eax
mov dword [esp + 0x4c], eax
call fcn.00479b00
mov edx, dword [esp + 0x20]
add esp, 4
mov ecx, esi
push dword [esp + 0x48]
call fcn.0047b190
mov eax, dword [esp + 0x58]
add esp, 4
mov ecx, dword [esp + 0x38]
test word [eax + 0x14], cx
je 0x4ab4a8
mov edx, edi
mov ecx, ebx
call fcn.004aa920
mov ecx, dword [esp + 0x1c]
call fcn.00478370
test eax, eax
je 0x4ab4cc
push dword [esp + 0x2c]
mov edx, 0x4c
mov ecx, ebx
push dword [esp + 0x4c]
call fcn.004634c0
add esp, 8
mov dl, byte [esp + 0x37]
mov ecx, dword [esp + 0x1c]
call fcn.00476660
cmp al, 0x41
je 0x4ab605
mov dl, byte [esp + 0x37]
mov ecx, dword [esp + 0x1c]
call fcn.00478420
test eax, eax
jne 0x4ab605
mov edx, dword [esp + 0x48]
lea eax, [esp + 0x37]
push eax
push 1
mov ecx, esi
call fcn.004aa2d0
jmp 0x4ab602
mov dword [esp + 0x6c], 1
mov dword [esp + 0x1c], edx
test eax, eax
je 0x4ab3cf
mov eax, dword [eax]
mov ecx, dword [esp + 0x10]
add ecx, edx
mov dword [esp + 0x14], ecx
mov eax, dword [eax + 0x10]
mov edx, eax
push ecx
mov ecx, esi
mov dword [esp + 0x90], eax
call fcn.0047b190
mov eax, dword [esp + 0x54]
add esp, 4
mov ecx, dword [esp + 0x38]
test word [eax + 0x14], cx
je 0x4ab55b
mov edx, edi
mov ecx, ebx
call fcn.004aa920
mov ecx, dword [esp + 0x8c]
call fcn.00478370
test eax, eax
je 0x4ab582
push dword [esp + 0x2c]
mov edx, 0x4c
mov ecx, ebx
push dword [esp + 0x18]
call fcn.004634c0
add esp, 8
mov ecx, dword [esp + 0x70]
test ecx, ecx
je 0x4ab3fe
mov eax, dword [esp + 0x24]
add eax, ecx
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x80], eax
mov dl, byte [eax]
call fcn.00476660
cmp al, 0x41
mov eax, dword [esp + 0x80]
jne 0x4ab5b7
mov byte [eax], 0x41
mov dl, byte [eax]
mov ecx, dword [esp + 0x8c]
call fcn.00478420
test eax, eax
je 0x4ab3fe
mov eax, dword [esp + 0x80]
mov byte [eax], 0x41
jmp 0x4ab3fe
cmp byte [esp + 0x63], 0
je 0x4ab609
mov eax, dword [esp + 0x24]
mov edx, 0x1a
add eax, dword [esp + 0x10]
mov ecx, ebx
push eax
push 0
call fcn.004634c0
mov dword [esp + 0x28], 0
add esp, 8
inc dword [esp + 0x24]
mov edx, dword [esp + 0x70]
mov ecx, dword [esp + 0x84]
call fcn.00444ae0
mov eax, dword [ebx + 0x20]
mov dword [edi + 0x34], eax
mov eax, dword [esp + 0x24]
test eax, eax
je 0x4ab64e
mov ecx, dword [esp + 0x20]
push eax
push dword [esp + 0x14]
mov eax, dword [esp + 0x44]
push dword [esp + 0x34]
push dword [esp + 0x64]
movzx edx, byte [ecx + eax*2 + str.usrt]
mov ecx, ebx
call fcn.004636a0
add esp, 0x10
mov edx, dword [esp + 0x50]
mov ecx, edi
call fcn.004aa260
mov edx, dword [esp + 0x54]
mov ecx, edi
call fcn.004aa260
cmp dword [esp + 0x28], 0
jne 0x4ab752
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 0xc]
test byte [ecx + 0x2a], 0x20
jne 0x4ab6bc
inc dword [esi + 0x48]
mov edx, 0x71
mov esi, dword [esi + 0x48]
mov ecx, ebx
push esi
push dword [esp + 0x5c]
call fcn.004634c0
mov edx, dword [esp + 0x38]
mov ecx, dword [esp + 0x48]
push esi
push 0xffffffffffffffff
call fcn.004799b0
push esi
push dword [esp + 0x44]
mov edx, 0x43
mov ecx, ebx
call fcn.004634c0
add esp, 0x18
jmp 0x4ab752
mov edx, dword [esp + 0x58]
cmp dword [esp + 0x30], edx
je 0x4ab756
call fcn.004811b0
mov ecx, esi
mov dword [esp + 0x20], eax
movzx edx, word [eax + 0x2e]
call fcn.0047c390
mov ecx, eax
xor edx, edx
mov eax, dword [esp + 0x20]
xor esi, esi
mov dword [esp + 0x28], ecx
cmp dx, word [eax + 0x2e]
jae 0x4ab732
mov edi, eax
lea eax, [esi + ecx]
mov ecx, dword [esp + 0x18]
push eax
mov eax, dword [edi + 4]
mov dx, word [eax + esi*2]
call fcn.004811d0
cwde
mov edx, 0x2f
push eax
push dword [esp + 0x60]
mov ecx, ebx
call fcn.00463390
movzx eax, word [edi + 0x2e]
inc esi
mov ecx, dword [esp + 0x34]
add esp, 0xc
cmp esi, eax
jl 0x4ab6f4
mov edi, dword [esp + 0x74]
mov eax, dword [esp + 0x20]
movzx eax, word [eax + 0x2e]
mov edx, 0x45
push eax
push ecx
push dword [esp + 0x98]
mov ecx, ebx
push dword [esp + 0x3c]
call fcn.004636a0
add esp, 0x10
mov edx, dword [esp + 0x58]
mov ecx, dword [esp + 0x4c]
test dword [ecx + 0x24], 0x1000
je 0x4ab769
mov byte [edi + 0x2d], 0x9f
jmp 0x4ab776
cmp dword [esp + 0x3c], 0
sete al
add al, 7
mov byte [edi + 0x2d], al
mov dword [edi + 0x30], edx
mov al, byte [ecx + 0x26]
and al, 1
mov byte [edi + 0x2e], al
test byte [ecx + 0x24], 0xf
jne 0x4abfb6
jmp 0x4abfb2
test eax, 0x2000
je 0x4abf77
mov eax, dword [esi + 0x44]
mov ecx, ebx
inc dword [esi + 0x48]
mov dword [esp + 0x8c], eax
inc eax
mov dword [esi + 0x44], eax
mov eax, dword [esi + 0x48]
mov dword [esp + 0x24], 0
mov dword [esp + 0x38], eax
mov dword [esp + 0x18], 0
mov dword [esp + 0x70], 0
call fcn.00463750
mov dword [esp + 0x3c], eax
xor edx, edx
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x80], 0
mov ecx, dword [eax + 0x10]
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x1c], ecx
mov eax, dword [eax + 0x30]
mov eax, dword [eax]
mov dword [esp + 0x14], eax
mov eax, dword [eax + 0xc]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x38]
mov byte [edi + 0x2d], 0x10
mov dword [edi + 0x30], eax
mov al, byte [edx + 0x29]
cmp al, 1
jbe 0x4ab93d
movzx eax, al
sub eax, dword [esp + 0x20]
dec eax
push 0
mov dword [esp + 0x2c], eax
lea ecx, [eax + eax*4]
shl ecx, 4
add ecx, 0x58
push ecx
mov ecx, dword [esp + 0x8c]
call fcn.00444d60
mov ecx, eax
add esp, 8
mov dword [esp + 0x4c], ecx
test ecx, ecx
jne 0x4ab85e
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [esp + 0x28]
mov al, dl
inc al
movzx eax, al
mov dword [ecx + 4], eax
mov dword [ecx], eax
mov eax, dword [esp + 0x2c]
movdqu xmm0, xmmword [eax]
movdqu xmmword [ecx + 8], xmm0
movdqu xmm0, xmmword [eax + 0x10]
movdqu xmmword [ecx + 0x18], xmm0
movdqu xmm0, xmmword [eax + 0x20]
movdqu xmmword [ecx + 0x28], xmm0
movdqu xmm0, xmmword [eax + 0x30]
movdqu xmmword [ecx + 0x38], xmm0
movdqu xmm0, xmmword [eax + 0x40]
mov eax, dword [esp + 0x5c]
movdqu xmmword [ecx + 0x48], xmm0
mov eax, dword [eax + 4]
add eax, 8
mov dword [esp + 0x48], eax
cmp edx, 1
jl 0x4ab90b
lea eax, [edi + 0x7c]
add ecx, 0x58
mov edi, eax
mov edi, edi
movzx eax, byte [edi]
lea edi, [edi + 0x50]
lea ecx, [ecx + 0x50]
lea eax, [eax + eax*4]
shl eax, 4
add eax, dword [esp + 0x48]
movdqu xmm0, xmmword [eax]
movdqu xmmword [ecx - 0x50], xmm0
movdqu xmm0, xmmword [eax + 0x10]
movdqu xmmword [ecx - 0x40], xmm0
movdqu xmm0, xmmword [eax + 0x20]
movdqu xmmword [ecx - 0x30], xmm0
movdqu xmm0, xmmword [eax + 0x30]
movdqu xmmword [ecx - 0x20], xmm0
movdqu xmm0, xmmword [eax + 0x40]
movdqu xmmword [ecx - 0x10], xmm0
dec edx
jne 0x4ab8c0
mov edi, dword [esp + 0x74]
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x5c]
test byte [eax + 0x22], 8
jne 0x4ab98a
test byte [ecx + 0x2a], 0x20
jne 0x4ab946
inc dword [esi + 0x48]
mov edx, 0x1a
mov eax, dword [esi + 0x48]
mov ecx, ebx
push eax
push 0
mov dword [esp + 0x20], eax
call fcn.004634c0
add esp, 8
jmp 0x4ab980
mov eax, dword [edx + 4]
mov dword [esp + 0x4c], eax
jmp 0x4ab90f
call fcn.004811b0
mov esi, eax
mov eax, dword [esp + 0x40]
mov edx, dword [eax + 0x44]
mov dword [esp + 0x18], edx
lea ecx, [edx + 1]
mov dword [eax + 0x44], ecx
movzx ecx, word [esi + 0x2e]
push ecx
push edx
mov edx, 0x39
mov ecx, ebx
call fcn.004634c0
add esp, 8
mov edx, esi
mov esi, dword [esp + 0x40]
mov ecx, esi
call fcn.00463d20
inc dword [esi + 0x48]
mov eax, dword [esi + 0x48]
mov dword [esp + 0x70], eax
push dword [esp + 0x38]
mov edx, 0x17
mov ecx, ebx
push 0
call fcn.004634c0
mov dword [esp + 0x80], eax
add esp, 8
mov eax, dword [esp + 0x68]
xor edx, edx
mov ecx, dword [eax + 0xc]
cmp ecx, 1
jle 0x4abaf8
mov dword [esp + 0x28], edx
test ecx, ecx
jle 0x4abaf6
mov ebx, dword [esp + 0x84]
xor ecx, ecx
mov dword [esp + 0x48], ecx
xor esi, esi
mov eax, dword [eax + 0x14]
add eax, ecx
mov edi, dword [eax]
mov dword [esp + 0x6c], edi
cmp eax, dword [esp + 0x14]
je 0x4aba21
test byte [edi + 4], 1
jne 0x4aba21
test byte [eax + 0x14], 2
jne 0x4aba21
mov edi, 0x1fff
test word [eax + 0x12], di
je 0x4aba21
mov edx, dword [esp + 0x6c]
mov ecx, ebx
push 0
push 0
call fcn.004772a0
push eax
mov edx, esi
mov ecx, ebx
call fcn.00476dc0
mov ecx, dword [esp + 0x54]
add esp, 0xc
mov edx, dword [esp + 0x28]
mov esi, eax
mov eax, dword [esp + 0x68]
inc edx
add ecx, 0x30
mov dword [esp + 0x28], edx
mov dword [esp + 0x48], ecx
cmp edx, dword [eax + 0xc]
jl 0x4ab9d3
mov ebx, dword [esp + 0x64]
mov edx, esi
mov edi, dword [esp + 0x74]
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x40]
test edx, edx
je 0x4abaf8
mov ecx, dword [esi]
push 0
push 0x30
call fcn.00444d60
mov ecx, eax
add esp, 8
mov dword [esp + 0x2c], ecx
test ecx, ecx
je 0x4aba8a
push 0x30
push 0
push ecx
call fcn.00525d00
mov ecx, dword [esp + 0x38]
add esp, 0xc
or eax, 0xffffffff
mov byte [ecx], 0x48
mov word [ecx + 0x22], ax
mov dword [ecx + 0x18], 1
mov eax, dword [esi]
mov dword [esp + 0x28], eax
test ecx, ecx
jne 0x4abab6
xor edx, edx
mov ecx, eax
call fcn.00477170
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x28]
call fcn.00477170
mov eax, dword [esp + 0x2c]
mov edx, eax
mov dword [esp + 0x10], edx
jmp 0x4abaf8
mov edx, dword [esp + 0x10]
mov dword [ecx + 0x10], edx
mov eax, dword [edx + 4]
and eax, 0x200100
or dword [ecx + 4], eax
call fcn.00476930
mov eax, dword [esi]
mov ecx, dword [eax + 0x64]
mov eax, dword [esp + 0x2c]
cmp dword [eax + 0x18], ecx
jle 0x4abaee
push ecx
push str.Expression_tree_is_too_large__maximum_depth__d_
push esi
call fcn.00447720
mov eax, dword [esp + 0x38]
add esp, 0xc
mov edx, eax
mov dword [esp + 0x10], edx
jmp 0x4abaf8
xor edx, edx
mov ecx, dword [esp + 0x50]
xor eax, eax
mov dword [esp + 0x6c], 0xf0
mov dword [esp + 0x54], eax
cmp dword [ecx + 0xc], eax
jle 0x4abe4e
mov ecx, dword [esp + 0x30]
jmp 0x4abb20
mov ebx, dword [esp + 0x50]
lea eax, [eax + eax*2]
shl eax, 4
add eax, dword [ebx + 0x14]
mov ebx, dword [esp + 0x64]
cmp dword [eax + 8], ecx
je 0x4abb49
mov edi, 0x400
test word [eax + 0x12], di
mov edi, dword [esp + 0x74]
je 0x4abe34
mov eax, dword [eax]
xor ecx, ecx
mov dword [esp + 0x48], ecx
test edx, edx
je 0x4abb60
test byte [eax + 4], 1
jne 0x4abb60
mov dword [edx + 0xc], eax
mov eax, edx
push dword [esp + 0x8c]
mov edx, dword [esp + 0x50]
mov ecx, esi
push dword [esp + 0x70]
push 0
push 0
push eax
call fcn.004b3170
add esp, 0x14
mov dword [esp + 0x88], eax
test eax, eax
je 0x4abe30
movzx ecx, byte [edi + 0x2c]
mov edx, dword [esp + 0x4c]
push 0
push ecx
push dword [esp + 0x28]
lea ecx, [eax + 0x2e0]
push ecx
mov ecx, esi
call fcn.004a9fb0
mov eax, dword [esp + 0x6c]
add esp, 0x10
test byte [eax + 0x22], 8
jne 0x4abd3f
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x54]
mov eax, dword [eax + 0xc]
dec eax
cmp ecx, eax
mov eax, 0xffffffff
cmove ecx, eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x2c], ecx
test byte [eax + 0x2a], 0x20
jne 0x4abc17
push 0
push dword [esp + 0x74]
mov edx, eax
mov ecx, esi
push dword [esp + 0x38]
push 0xffffffffffffffff
call fcn.00479d50
push dword [esp + 0x3c]
mov edx, 0x83
mov ecx, ebx
push eax
push 0
push dword [esp + 0x34]
call fcn.004636a0
add esp, 0x20
mov dword [esp + 0x48], eax
jmp 0x4abd3f
mov ecx, eax
call fcn.004811b0
mov ecx, esi
mov dword [esp + 0x94], eax
movzx edx, word [eax + 0x2e]
mov dword [esp + 0x44], edx
call fcn.0047c390
xor ecx, ecx
mov dword [esp + 0x58], eax
mov dword [esp + 0x28], ecx
test edx, edx
jle 0x4abc9f
mov edi, eax
jmp 0x4abc50
mov eax, dword [esp + 0x94]
mov edx, dword [esp + 0x1c]
push 0
push edi
mov eax, dword [eax + 4]
push dword [esp + 0x38]
movsx eax, word [eax + ecx*2]
mov ecx, esi
push eax
call fcn.00479d50
add esp, 0x10
cmp eax, edi
je 0x4abc89
push edi
push eax
mov edx, 0x20
mov ecx, ebx
call fcn.004634c0
add esp, 8
mov ecx, dword [esp + 0x28]
inc edi
mov edx, dword [esp + 0x44]
inc ecx
mov dword [esp + 0x28], ecx
cmp ecx, edx
jl 0x4abc50
mov edi, dword [esp + 0x74]
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x4abccb
push edx
push dword [esp + 0x5c]
mov edx, 0x46
mov ecx, ebx
push 0
push dword [esp + 0x24]
call fcn.004636a0
mov dword [esp + 0x58], eax
add esp, 0x10
mov eax, dword [esp + 0x2c]
test eax, eax
js 0x4abd1a
push dword [esp + 0x70]
mov edx, 0x31
mov ecx, ebx
push dword [esp + 0x48]
push dword [esp + 0x60]
call fcn.00463390
add esp, 0xc
mov edx, 0x6f
mov ecx, ebx
push 0
push dword [esp + 0x74]
push dword [esp + 0x20]
call fcn.00463390
add esp, 0xc
cmp dword [esp + 0x2c], 0
je 0x4abd1a
mov ecx, dword [ebx + 4]
test ecx, ecx
je 0x4abd1a
mov eax, dword [ebx + 0x20]
lea eax, [eax + eax*4]
mov byte [ecx + eax*4 - 0x11], 0x10
push dword [esp + 0x44]
mov edx, dword [esp + 0x5c]
mov ecx, esi
call fcn.00479b00
mov eax, dword [esp + 0x48]
add esp, 4
cmp eax, dword [esi + 0x38]
jle 0x4abd3f
mov dword [esi + 0x38], eax
mov eax, dword [esp + 0x58]
mov dword [esi + 0x3c], eax
mov eax, dword [ebx + 0x18]
mov ecx, dword [ebx + 0x20]
mov dword [esp + 0x94], ecx
cmp dword [eax + 0x54], ecx
jg 0x4abd63
mov ecx, ebx
call fcn.00463310
test eax, eax
jne 0x4abd97
mov ecx, dword [esp + 0x94]
mov eax, dword [ebx + 4]
lea ecx, [ecx + ecx*4]
inc dword [ebx + 0x20]
mov edx, dword [esp + 0x38]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x3c]
mov word [eax + ecx*4], 0xf
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 + 0x48]
test eax, eax
je 0x4abdba
mov edx, dword [ebx + 0x20]
cmp edx, eax
jbe 0x4abdb0
lea ecx, [eax + eax*4]
mov eax, dword [ebx + 4]
mov dword [eax + ecx*4 + 8], edx
mov ecx, dword [ebx + 0x20]
mov eax, dword [ebx + 0x18]
dec ecx
mov dword [eax + 0x58], ecx
mov edx, dword [esp + 0x88]
mov ecx, 1
mov eax, dword [esp + 0x80]
cmp byte [edx + 0x27], 0
cmovne eax, ecx
mov ecx, dword [edx + 0x320]
mov dword [esp + 0x80], eax
test dword [ecx + 0x24], 0x200
je 0x4abe21
cmp dword [esp + 0x54], 0
je 0x4abdfa
mov eax, dword [esp + 0x24]
cmp dword [ecx + 0x1c], eax
jne 0x4abe21
mov eax, dword [esp + 0x1c]
test byte [eax + 0x2a], 0x20
je 0x4abe10
mov eax, dword [ecx + 0x1c]
mov eax, dword [eax + 0x34]
and al, 3
cmp al, 2
je 0x4abe21
mov eax, dword [ecx + 0x1c]
or dword [esp + 0x6c], 0x1000
mov dword [esp + 0x24], eax
jmp 0x4abe29
mov dword [esp + 0x24], 0
mov ecx, edx
call fcn.004b3b10
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x50]
mov eax, dword [esp + 0x54]
inc eax
mov dword [esp + 0x54], eax
cmp eax, dword [edx + 0xc]
mov edx, dword [esp + 0x10]
jl 0x4abb20
mov eax, dword [esp + 0x24]
mov dword [edi + 0x38], eax
test eax, eax
je 0x4abe63
mov eax, dword [esp + 0x8c]
mov dword [edi + 8], eax
mov edx, dword [esp + 0x10]
test edx, edx
je 0x4abe7e
mov ecx, dword [esp + 0x84]
mov dword [edx + 0xc], 0
call fcn.00477170
mov edx, dword [ebx + 0x20]
mov eax, dword [esp + 0x78]
cmp edx, eax
jbe 0x4abe93
lea ecx, [eax + eax*4]
mov eax, dword [ebx + 4]
mov dword [eax + ecx*4 + 4], edx
mov eax, dword [edi + 0xc]
mov esi, dword [ebx + 0x20]
mov dword [esp + 0x78], eax
mov eax, dword [ebx + 0x18]
cmp dword [eax + 0x54], esi
jg 0x4abeb0
mov ecx, ebx
call fcn.00463310
test eax, eax
jne 0x4abee4
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x20]
mov edx, dword [esp + 0x78]
mov word [eax + ecx*4], 0xe
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 [ebx + 0x18]
or esi, 0xffffffff
sub esi, dword [esp + 0x3c]
js 0x4abefd
mov ecx, dword [edx + 0x70]
test ecx, ecx
je 0x4abefd
mov eax, dword [ebx + 0x20]
mov dword [ecx + esi*4], eax
mov eax, dword [ebx + 0x20]
dec eax
mov dword [edx + 0x58], eax
mov eax, dword [esp + 0x5c]
cmp byte [eax + 0x29], 1
jbe 0x4abf60
mov edx, dword [esp + 0x4c]
test edx, edx
je 0x4abf60
mov ecx, dword [esp + 0x84]
test ecx, ecx
je 0x4abf57
cmp dword [ecx + 0x208], 0
je 0x4abf31
call fcn.00444aa0
jmp 0x4abf60
cmp edx, dword [ecx + 0x114]
jb 0x4abf57
cmp edx, dword [ecx + 0x118]
jae 0x4abf57
mov eax, dword [ecx + 0x110]
mov dword [edx], eax
dec dword [ecx + 0xfc]
mov dword [ecx + 0x110], edx
jmp 0x4abf60
push edx
call fcn.00444a30
add esp, 4
cmp dword [esp + 0x80], 0
jne 0x4abfb6
mov edx, dword [esp + 0x14]
mov ecx, edi
call fcn.004aa260
jmp 0x4abfb6
test byte [esp + 0x78], 8
je 0x4abf84
mov byte [edi + 0x2d], 0x9f
jmp 0x4abfb6
mov ecx, dword [esp + 0x3c]
push dword [esp + 0x18]
mov al, byte [ecx + 0x586414]
movzx edx, byte [ecx + 0x5868a8]
mov ecx, ebx
mov byte [edi + 0x2d], al
mov eax, dword [esp + 0x34]
push eax
mov dword [edi + 0x30], eax
call fcn.004634c0
add esp, 8
inc eax
mov dword [edi + 0x34], eax
mov byte [edi + 0x2f], 1
mov ecx, dword [esp + 0x68]
mov eax, dword [ecx + 0xc]
mov edx, dword [ecx + 0x14]
mov dword [esp + 0x28], edx
mov dword [esp + 0x14], eax
test eax, eax
jle 0x4ac0da
movzx eax, word [edx + 0x14]
xor esi, esi
mov dword [esp + 0x78], eax
test al, 6
jne 0x4ac0be
mov ecx, dword [edx + 0x28]
mov eax, dword [edx + 0x2c]
and ecx, dword [edi + 0x48]
and eax, dword [edi + 0x4c]
or ecx, eax
je 0x4abfff
mov eax, dword [esp + 0x5c]
mov byte [eax + 0x27], 1
jmp 0x4ac0be
mov eax, dword [edx]
mov dword [esp + 0x88], eax
cmp dword [edi], esi
je 0x4ac016
test byte [eax + 4], 1
je 0x4ac0be
test dword [esp + 0x78], 0x200
je 0x4ac07f
mov eax, dword [edi + 0x24]
mov esi, dword [ebx + 0x20]
mov dword [esp + 0x78], eax
mov eax, dword [ebx + 0x18]
cmp dword [eax + 0x54], esi
jg 0x4ac044
mov ecx, ebx
call fcn.00463310
test eax, eax
je 0x4ac044
mov esi, 1
jmp 0x4ac078
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x20]
mov edx, dword [esp + 0x78]
mov word [eax + ecx*4], 0x2e
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x40]
mov edx, eax
push 0x10
push dword [esp + 0x94]
call fcn.0047b8d0
add esp, 8
test esi, esi
je 0x4ac0b5
mov edx, dword [ebx + 0x20]
cmp edx, esi
jbe 0x4ac0ab
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
mov dword [eax + ecx*4 + 8], edx
mov ecx, dword [ebx + 0x20]
mov eax, dword [ebx + 0x18]
dec ecx
mov dword [eax + 0x58], ecx
mov edx, dword [esp + 0x28]
or word [edx + 0x14], 4
mov eax, dword [esp + 0x14]
add edx, 0x30
dec eax
mov dword [esp + 0x28], edx
mov dword [esp + 0x14], eax
test eax, eax
jg 0x4abfd0
mov ecx, dword [esp + 0x68]
mov esi, dword [ecx + 0x14]
mov ecx, dword [ecx + 0xc]
mov dword [esp + 0x18], esi
mov dword [esp + 0x10], ecx
test ecx, ecx
jle 0x4ac233
mov ebx, dword [esp + 0x40]
test byte [esi + 0x14], 6
jne 0x4ac21b
movzx eax, word [esi + 0x12]
test al, 0x82
je 0x4ac21b
test eax, 0x800
je 0x4ac21b
mov edx, dword [esp + 0x30]
cmp dword [esi + 8], edx
jne 0x4ac21b
cmp dword [edi], 0
jne 0x4ac21b
mov eax, dword [esi]
mov ecx, dword [esp + 0x68]
push 0
push 0x83
push dword [ebp + 0xc]
mov dword [esp + 0x94], eax
push dword [ebp + 8]
push dword [esi + 0xc]
call fcn.004ae550
add esp, 0x14
mov dword [esp + 0x78], eax
test eax, eax
je 0x4ac217
test byte [eax + 0x14], 4
jne 0x4ac217
mov ecx, dword [esp + 0x84]
push 0
push 0x30
call fcn.00444d60
mov esi, eax
add esp, 8
test esi, esi
je 0x4ac213
mov ecx, dword [esp + 0x78]
mov edx, esi
mov eax, dword [esp + 0x88]
push 0x10
push dword [esp + 0x94]
mov ecx, dword [ecx]
movdqu xmm0, xmmword [ecx]
movdqu xmmword [esi], xmm0
movdqu xmm0, xmmword [ecx + 0x10]
movdqu xmmword [esi + 0x10], xmm0
movdqu xmm0, xmmword [ecx + 0x20]
mov ecx, ebx
movdqu xmmword [esi + 0x20], xmm0
mov eax, dword [eax + 0xc]
mov dword [esi + 0xc], eax
call fcn.0047b8d0
mov ecx, dword [esp + 0x8c]
add esp, 8
test ecx, ecx
je 0x4ac20a
cmp dword [ecx + 0x208], 0
je 0x4ac1e4
mov edx, esi
call fcn.00444aa0
jmp 0x4ac213
cmp esi, dword [ecx + 0x114]
jb 0x4ac20a
cmp esi, dword [ecx + 0x118]
jae 0x4ac20a
mov eax, dword [ecx + 0x110]
mov dword [esi], eax
dec dword [ecx + 0xfc]
mov dword [ecx + 0x110], esi
jmp 0x4ac213
push esi
call fcn.00444a30
add esp, 4
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
dec ecx
add esi, 0x30
mov dword [esp + 0x10], ecx
mov dword [esp + 0x18], esi
test ecx, ecx
jg 0x4ac0f4
mov ebx, dword [esp + 0x64]
mov eax, dword [edi]
mov dword [esp + 0x88], eax
test eax, eax
je 0x4ac375
mov eax, dword [ebx + 0x20]
mov dword [edi + 0x1c], eax
mov ecx, dword [ebx + 0x18]
mov eax, dword [ebx + 0x20]
mov dword [esp + 0x78], eax
mov dword [esp + 0x14], ecx
cmp dword [ecx + 0x54], eax
jg 0x4ac2d4
mov eax, dword [ecx + 0x54]
test eax, eax
je 0x4ac268
add eax, eax
jmp 0x4ac26d
mov eax, 0x33
mov edx, dword [ebx + 4]
lea eax, [eax + eax*4]
mov ecx, dword [ecx]
shl eax, 2
push 0
push eax
call fcn.00444e00
mov esi, eax
add esp, 8
test esi, esi
je 0x4ac30b
mov eax, dword [esp + 0x14]
mov eax, dword [eax]
test eax, eax
je 0x4ac2b0
cmp esi, dword [eax + 0x114]
jb 0x4ac2b0
cmp esi, dword [eax + 0x118]
jae 0x4ac2b0
movzx ecx, word [eax + 0xf8]
jmp 0x4ac2bc
push esi
call dword [0x5c17a0]
mov ecx, eax
add esp, 4
mov eax, 0xcccccccd
mul ecx
mov eax, dword [esp + 0x14]
shr edx, 4
mov dword [eax + 0x54], edx
mov eax, dword [esp + 0x78]
mov dword [ebx + 4], esi
inc dword [ebx + 0x20]
lea ecx, [eax + eax*4]
mov eax, dword [ebx + 4]
mov edx, dword [esp + 0x88]
mov word [eax + ecx*4], 0x17
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 ebx, dword [esp + 0x40]
mov ecx, ebx
call fcn.00479e00
mov edx, dword [esp + 0x68]
mov eax, dword [esp + 0x68]
mov esi, dword [edx + 0x14]
xor edx, edx
mov dword [esp + 0x14], edx
cmp dword [eax + 0xc], edx
jle 0x4ac375
lea esp, [esp]
test byte [esi + 0x14], 6
jne 0x4ac368
mov ecx, dword [esi + 0x28]
mov eax, dword [esi + 0x2c]
and ecx, dword [edi + 0x48]
and eax, dword [edi + 0x4c]
or ecx, eax
jne 0x4ac364
mov edx, dword [esi]
mov ecx, ebx
push 0x10
push dword [esp + 0x94]
call fcn.0047b8d0
mov edx, dword [esp + 0x1c]
add esp, 8
or word [esi + 0x14], 4
mov eax, dword [esp + 0x68]
inc edx
add esi, 0x30
mov dword [esp + 0x14], edx
cmp edx, dword [eax + 0xc]
jl 0x4ac330
mov eax, dword [edi + 0x48]
mov edx, dword [edi + 0x4c]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret