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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xf0
mov eax, dword [ebp + 0xc]
mov esi, dword [ecx + 8]
mov ebx, dword [ecx]
mov dword [esp + 0x78], 0
mov dword [esp + 0x74], 0
mov dword [esp + 0x7c], 0
xor edi, edi
test eax, eax
je 0x4aaf7b
cmp dword [eax], 0x40
cmovl edi, eax
mov eax, dword [edx]
cmp eax, 0x41
jl 0x4aaf97
push 0x40
push str.at_most__d_tables_in_a_join
push ecx
call fcn.00434540
add esp, 0xc
jmp 0x4ac8ef
mov dword [esp + 0x1c], edi
mov dword [esp + 0x18], edx
mov dword [esp + 0x28], esi
mov dword [esp + 8], ecx
movzx ecx, word [ebp + 0x18]
movzx ecx, cx
mov dword [esp + 0x4c], ecx
test cl, 0x20
mov edi, 1
cmove edi, eax
mov dword [esp + 0x34], edi
shl edi, 5
lea esi, [edi + edi*2]
add esi, 0x307
and esi, 0xffffffe0
lea edx, [esi + 0x48]
mov ecx, ebx
push 0
call fcn.0043f5f0
add esp, 4
mov ecx, ebx
mov ebx, eax
cmp byte [ecx + 0x57], 0
je 0x4aaffd
test ebx, ebx
je 0x4ac8ef
mov edx, ebx
call fcn.0043f4f0
jmp 0x4ac8ef
mov dword [esp + 0x30], ecx
mov edx, dword [ebp + 8]
mov ecx, dword [esp + 8]
mov dword [ebx], ecx
mov eax, dword [esp + 0x18]
mov dword [ebx + 4], eax
mov eax, dword [esp + 0x1c]
mov dword [ebx + 8], eax
mov dword [ebx + 0x10], edx
mov eax, dword [ebp + 0x10]
mov dword [ebx + 0xc], eax
mov dword [ebx + 0x1c], 0xffffffff
mov dword [ebx + 0x18], 0xffffffff
mov eax, dword [esp + 0x34]
mov byte [ebx + 0x30], al
mov eax, dword [ecx + 0x38]
dec eax
mov dword [ecx + 0x38], eax
mov dword [ebx + 0x20], eax
mov dword [ebx + 0x24], eax
movzx eax, word [ebp + 0x18]
mov dword [esp + 0x58], eax
movzx eax, word [ebp + 0x18]
mov word [ebx + 0x2c], ax
mov eax, dword [ebp + 0x1c]
mov word [ebx + 0x2e], ax
mov eax, dword [ecx + 0x88]
mov dword [ebx + 0x28], eax
mov ecx, dword [ebp + 0x14]
lea eax, [edi + edi*2]
mov dword [ebx + 0x14], ecx
pxor xmm0, xmm0
movdqu xmmword [ebx + 0x31], xmm0
movdqu xmmword [ebx + 0x41], xmm0
mov dword [ebx + 0x54], 0
mov dword [ebx + 0x50], 0
add eax, 0x48
lea ecx, [ebx + 0x300]
push eax
push 0
mov dword [esp + 0x4c], ecx
push ecx
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
mov dword [ebx + 0x1fc], 0
mov dword [ebx + 0x200], 0xffffff9d
mov dword [esp + 0x68], ebx
lea ecx, [ebx + 0x58]
mov dword [esp + 0x6c], ecx
lea eax, [ebx + esi]
mov dword [esp + 0x70], eax
lea eax, [ebx + esi + 0x3c]
mov dword [ebx + esi + 0x34], eax
mov word [ebx + esi + 0x2c], 0
mov word [ebx + esi + 0x30], 3
mov dword [ebx + esi + 0x28], 0
mov dword [ebx + 0x58], ebx
mov byte [ebx + 0x61], 0
mov dword [ebx + 0x5c], 0
mov dword [ebx + 0x64], 0
mov dword [ebx + 0x6c], 0
mov dword [ebx + 0x68], 8
lea eax, [ebx + 0x78]
mov dword [ebx + 0x70], eax
mov dword [esp + 0x5c], ecx
mov edx, dword [ebp + 8]
push 0x2c
call fcn.004b3da0
add esp, 4
cmp dword [esp + 0x34], 0
mov dword [esp + 0x14], ebx
je 0x4ab420
xor eax, eax
mov edi, dword [esp + 0x18]
jmp 0x4ab165
push dword [esp + 0xc]
push dword [edx]
push str.too_many_arguments_on__s_____max__d
push dword [esp + 0x14]
call fcn.00434540
add esp, 0x10
nop dword [eax]
mov eax, dword [esp + 0x10]
inc eax
mov edi, dword [esp + 0x18]
cmp eax, dword [edi]
mov ebx, dword [esp + 0x14]
jge 0x4ab461
mov dword [esp + 0x10], eax
shl eax, 6
mov ecx, dword [edi + eax + 0x30]
mov edx, dword [ebx + 0x1fc]
mov esi, edi
lea edi, [edx + 1]
mov dword [ebx + 0x1fc], edi
mov dword [ebx + edx*4 + 0x200], ecx
test byte [esi + eax + 0x2d], 4
je 0x4ab150
mov ecx, dword [esp + 0x18]
mov ecx, dword [ecx + eax + 0x40]
mov dword [esp + 0x24], ecx
test ecx, ecx
je 0x4ab150
mov ecx, dword [esp + 0x24]
cmp dword [ecx], 0
jle 0x4ab150
mov ecx, dword [esp + 0x18]
lea edx, [ecx + eax]
add edx, 0x30
mov dword [esp + 0x2c], edx
mov edx, dword [ecx + eax + 0x18]
xor edi, edi
mov dword [esp + 0xc], 0
mov dword [esp + 0x3c], edx
movsx eax, word [edx + 0x22]
cmp edi, eax
jge 0x4ab136
mov ecx, dword [edx + 4]
mov ebx, edi
shl ebx, 0x10
lea edx, [edi + edi*2]
lea ecx, [ecx + edx*4]
add ecx, 0xa
mov edx, dword [esp + 0x3c]
nop dword [eax]
test byte [ecx], 2
jne 0x4ab210
inc edi
add ebx, 0x10000
add ecx, 0xc
cmp eax, edi
jne 0x4ab1f0
jmp 0x4ab136
mov eax, dword [esp + 8]
mov ecx, dword [eax]
mov edx, 0x34
push 0
call fcn.0043f5f0
mov edx, dword [esp + 0x40]
add esp, 4
test eax, eax
je 0x4ab150
mov ecx, eax
pxor xmm0, xmm0
movdqu xmmword [eax], xmm0
movdqu xmmword [eax + 0x20], xmm0
movdqu xmmword [eax + 0x10], xmm0
mov dword [eax + 0x30], 0
mov byte [eax], 0xa7
mov word [eax + 0x22], 0xffff
mov dword [eax + 0x18], 1
mov eax, dword [esp + 0x2c]
mov eax, dword [eax]
mov dword [ecx + 0x1c], eax
mov word [ecx + 0x20], di
mov dword [esp + 0x20], ecx
mov dword [ecx + 0x2c], edx
sar ebx, 0x10
test byte [edx + 0x1c], 0x60
je 0x4ab2c0
mov eax, dword [edx + 4]
lea ecx, [ebx + ebx*2]
test byte [eax + ecx*4 + 0xa], 0x60
je 0x4ab2c0
movzx ecx, word [edx + 0x22]
mov edx, 0xffffffff
shl edx, cl
test cl, 0x20
mov eax, 0xffffffff
cmovne eax, edx
mov esi, 0
cmovne edx, esi
cmp cx, 0x40
not edx
not eax
mov ecx, 0xffffffff
cmovge eax, ecx
cmovge edx, ecx
jmp 0x4ab2ec
cmp ebx, 0x3f
mov eax, 0x3f
cmovge ebx, eax
xor eax, eax
mov ecx, ebx
mov edx, 1
shld eax, edx, cl
mov edx, 1
shl edx, cl
test bl, 0x20
cmovne eax, edx
mov ecx, 0
cmovne edx, ecx
mov ecx, dword [esp + 0x2c]
or dword [ecx + 8], edx
or dword [ecx + 0xc], eax
mov eax, dword [esp + 0xc]
shl eax, 4
mov ecx, dword [esp + 0x24]
mov edx, dword [ecx + eax + 8]
test edx, edx
mov ecx, dword [esp + 8]
je 0x4ab327
mov eax, dword [esp + 8]
mov ecx, dword [eax]
push 0
push 0
call fcn.0049d550
mov ecx, dword [esp + 0x10]
add esp, 8
mov esi, eax
jmp 0x4ab329
xor esi, esi
mov ecx, dword [ecx]
mov edx, 0x34
push 0
call fcn.0043f5f0
add esp, 4
mov ebx, eax
test eax, eax
je 0x4ab3a3
pxor xmm0, xmm0
movdqu xmmword [ebx], xmm0
movdqu xmmword [ebx + 0x20], xmm0
movdqu xmmword [ebx + 0x10], xmm0
mov dword [ebx + 0x30], 0
mov byte [ebx], 0xae
mov word [ebx + 0x22], 0xffff
test esi, esi
je 0x4ab376
mov dword [ebx + 0xc], esi
mov eax, dword [esi + 4]
mov ecx, 0x400208
and eax, ecx
mov dword [ebx + 4], eax
mov ecx, ebx
call fcn.004d6c30
mov ecx, dword [esp + 8]
mov eax, dword [ecx]
mov eax, dword [eax + 0x84]
cmp eax, dword [ebx + 0x18]
jge 0x4ab3bc
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push ecx
call fcn.00434540
mov ecx, dword [esp + 0x14]
add esp, 0xc
jmp 0x4ab3bc
test esi, esi
mov ecx, dword [esp + 8]
je 0x4ab3bc
mov eax, dword [esp + 8]
mov ecx, dword [eax]
mov edx, esi
call fcn.00469350
mov ecx, dword [esp + 8]
inc edi
mov edx, 0x35
push ebx
push dword [esp + 0x24]
call fcn.0047c200
add esp, 8
mov ebx, eax
mov ecx, dword [esp + 0x2c]
movzx eax, byte [ecx - 4]
and al, 0x48
cmp al, 1
mov eax, 0
adc eax, 1
mov edx, dword [ecx]
mov ecx, ebx
push eax
call fcn.004a7300
add esp, 4
mov ecx, dword [esp + 0x5c]
mov edx, ebx
push 1
call fcn.004b9f50
add esp, 4
mov eax, dword [esp + 0xc]
inc eax
mov dword [esp + 0xc], eax
mov ecx, dword [esp + 0x24]
cmp eax, dword [ecx]
mov edx, dword [esp + 0x3c]
jl 0x4ab1c8
jmp 0x4ab150
mov ecx, dword [esp + 0x1c]
test ecx, ecx
mov edx, dword [esp + 0x4c]
je 0x4ab434
lea eax, [ebx + 0x31]
movzx ecx, byte [ecx]
mov byte [eax], cl
test edx, 0x100
mov edi, dword [esp + 0x18]
je 0x4ab44e
mov eax, dword [esp + 0x30]
test byte [eax + 0x50], 0x10
jne 0x4ab44e
mov byte [ebx + 0x33], 1
push str.SCAN_CONSTANT_ROW
push 0
push dword [esp + 0x10]
call fcn.0049ae00
add esp, 0xc
mov esi, dword [ebx + 0x64]
test esi, esi
mov ebx, dword [esp + 0x5c]
jle 0x4ab486
inc esi
nop dword [eax]
lea eax, [esi - 2]
mov ecx, edi
mov edx, ebx
push eax
call fcn.004ba1a0
add esp, 4
dec esi
cmp esi, 1
ja 0x4ab470
cmp dword [ebp + 0x14], 0
je 0x4ab551
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0x3c]
test eax, eax
je 0x4ab551
mov ecx, dword [ebp + 0x14]
test byte [ecx + 4], 9
jne 0x4ab551
mov ecx, dword [ebp + 0x14]
mov edx, dword [ecx + 0x20]
cmp dword [edx], 1
jne 0x4ab551
mov ecx, dword [edx + 0x18]
cmp byte [ecx + 0x2b], 1
jne 0x4ab551
mov ecx, dword [ebp + 0x14]
mov ecx, dword [ecx + 0x30]
mov esi, dword [edx + 0x30]
mov edx, dword [esp + 0x14]
mov edx, dword [edx + 0x64]
test edx, edx
jle 0x4ab4f9
mov edi, dword [esp + 0x14]
mov edi, dword [edi + 0x70]
add edi, 0x14
jmp 0x4ab4ed
add edi, 0x30
dec edx
je 0x4ab4f9
test byte [edi - 0xa], 4
jne 0x4ab4e7
cmp dword [edi], esi
je 0x4ab4e7
jmp 0x4ab551
test ecx, ecx
je 0x4ab51e
mov edx, dword [ecx]
test edx, edx
jle 0x4ab51e
add ecx, 0x10
mov edi, dword [ecx - 8]
cmp byte [edi], 0xa7
jne 0x4ab551
cmp dword [edi + 0x1c], esi
jne 0x4ab551
test byte [ecx], 2
jne 0x4ab551
add ecx, 0x10
dec edx
jne 0x4ab506
mov edi, dword [ebp + 0x14]
mov edx, dword [edi + 8]
mov ecx, ebx
push 0x49
push esi
push dword [eax + 0xc]
call fcn.004bdd50
add esp, 0xc
mov edx, dword [edi + 0xc]
test edx, edx
jle 0x4ab551
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0x3c]
mov ecx, ebx
push 0x4a
push esi
push dword [eax + 0x10]
call fcn.004bdd50
add esp, 0xc
mov ecx, dword [esp + 8]
cmp dword [ecx + 0x24], 0
mov esi, dword [esp + 0x14]
jne 0x4abab5
mov eax, dword [esp + 0x6c]
cmp dword [eax + 0x14], 0
jle 0x4ab631
xor esi, esi
xor ebx, ebx
jmp 0x4ab5b1
push 0x10
mov eax, dword [esp + 0x18]
push dword [eax + 0x24]
push dword [edi + esi]
push ecx
call fcn.004991c0
mov ecx, dword [esp + 0x18]
add esp, 0x10
or byte [edi + esi + 0xa], 4
nop word cs:[eax + eax]
inc ebx
mov eax, dword [esp + 0x6c]
add esi, 0x30
cmp ebx, dword [eax + 0x14]
jge 0x4ab631
mov edi, dword [eax + 0x18]
test byte [edi + esi + 0xa], 2
jne 0x4ab5a0
mov eax, dword [edi + esi + 0x28]
or eax, dword [edi + esi + 0x2c]
jne 0x4ab5a0
cmp dword [esp + 0x34], 0
je 0x4ab577
mov edx, dword [edi + esi]
pxor xmm0, xmm0
movdqu xmmword [esp + 0x8c], xmm0
movdqa xmmword [esp + 0x80], xmm0
mov word [esp + 0x94], 1
mov dword [esp + 0x84], 0x4bdee0
mov dword [esp + 0x88], 0x499fa0
test edx, edx
je 0x4ab577
lea ecx, [esp + 0x80]
call fcn.00499fb0
mov ecx, dword [esp + 8]
cmp word [esp + 0x94], 0
jne 0x4ab577
jmp 0x4ab5a0
test dword [esp + 0x4c], 0x100
je 0x4ab677
mov eax, dword [esp + 0x30]
test byte [eax + 0x50], 0x10
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x5c]
jne 0x4ab66b
push dword [ebp + 0x10]
push eax
call fcn.004b3e30
add esp, 8
test eax, eax
je 0x4abaf2
mov byte [esi + 0x33], 1
jmp 0x4ab677
and dword [esp + 0x58], 0xfeff
and byte [esi + 0x2d], 0xfe
mov eax, dword [esp + 0x34]
cmp eax, 1
jne 0x4ab6de
pcmpeqd xmm0, xmm0
movdqu xmmword [esp + 0xc8], xmm0
movdqu xmmword [esp + 0xb8], xmm0
movdqu xmmword [esp + 0xa8], xmm0
movdqu xmmword [esp + 0x98], xmm0
mov dword [esp + 0xdc], 0xffffffff
mov dword [esp + 0xd8], 0xffffffff
mov ebx, dword [esp + 0x68]
test byte [ebx + 0x2c], 0x20
jne 0x4ab6de
mov eax, dword [ebx + 4]
mov edi, dword [eax + 0x18]
cmp byte [edi + 0x2b], 1
je 0x4ab6de
test byte [eax + 0x2d], 3
je 0x4abb10
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x70]
mov eax, dword [ecx]
mov edi, dword [ecx + 4]
mov dword [esp + 0x10], ecx
movzx ecx, byte [ecx + 0x30]
shl ecx, 6
lea ebx, [edi + ecx]
add ebx, 8
add edi, 8
mov esi, dword [eax]
lea eax, [edx + 0x3c]
mov dword [esp + 0x60], eax
mov dword [edx + 0x34], eax
mov word [edx + 0x2c], 0
mov word [edx + 0x30], 3
mov dword [esp + 0x2c], edx
mov dword [edx + 0x28], 0
mov ecx, edi
mov dword [esp + 0x7c], 0x4e20
xor edi, edi
mov dword [esp + 0x3c], ebx
cmp ecx, ebx
jae 0x4aba6b
mov dword [esp + 0x38], 0
mov dword [esp + 0x48], 0
xor edx, edx
mov dword [esp + 0x40], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x64], esi
jmp 0x4ab7a5
push str.abbreviated_query_algorithm_search
push 0x1c
call fcn.004287c0
mov edx, dword [esp + 0x5c]
add esp, 8
inc edx
mov ecx, dword [esp + 0x4c]
add ecx, 0x40
cmp ecx, dword [esp + 0x3c]
jae 0x4aba53
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x54], edx
mov byte [eax + 0x10], dl
add dword [esp + 0x7c], 0x3e8
mov dword [esp + 0x4c], ecx
mov eax, dword [ecx + 0x28]
mov edx, 1
mov edi, 0
mov ecx, dword [esp + 0x10]
cmp dword [ecx + 0x200], eax
je 0x4ab830
mov ecx, dword [esp + 0x10]
mov esi, dword [ecx + 0x1fc]
xor edx, edx
mov edi, 0
cmp esi, 2
jl 0x4ab830
dec esi
xor ecx, ecx
nop
mov edx, dword [esp + 0x10]
cmp dword [edx + ecx*4 + 0x204], eax
je 0x4ab808
inc ecx
cmp esi, ecx
jne 0x4ab7f0
xor edx, edx
xor edi, edi
jmp 0x4ab830
inc cl
xor edi, edi
mov eax, 1
shld edi, eax, cl
mov edx, 1
shl edx, cl
test cl, 0x20
cmovne edi, edx
mov eax, 0
cmovne edx, eax
nop dword [eax]
mov eax, dword [esp + 0x2c]
mov dword [eax + 8], edx
mov dword [eax + 0xc], edi
mov edx, dword [esp + 0x4c]
movzx eax, byte [edx + 0x24]
cmp dword [esp + 0x48], 0
jne 0x4ab880
mov ecx, eax
and cl, 0x62
jne 0x4ab880
xor eax, eax
mov esi, dword [esp + 0x38]
test esi, esi
setne al
mov ecx, dword [esp + 0x1c]
cmove ecx, esi
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x20]
cmove ecx, esi
mov dword [esp + 0x20], ecx
mov dword [esp + 0x48], 0
mov dword [esp + 0x38], eax
jmp 0x4ab8b4
test al, 0x40
mov ecx, 1
mov esi, dword [esp + 0x38]
cmovne esi, ecx
mov dword [esp + 0x38], esi
mov ecx, dword [esp + 0x20]
or ecx, dword [esp + 0x40]
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x1c]
or ecx, dword [esp + 0x50]
mov dword [esp + 0x1c], ecx
shr eax, 4
and eax, 1
mov dword [esp + 0x48], eax
mov eax, dword [edx + 0x10]
cmp byte [eax + 0x2b], 1
jne 0x4ab990
lea ecx, [edx + 0x40]
xor edi, edi
mov esi, 0
cmp ecx, dword [esp + 0x3c]
jae 0x4ab9b0
xor edx, edx
mov eax, dword [esp + 0x4c]
xor ebx, ebx
jmp 0x4ab908
xor edx, edx
mov esi, 1
or esi, ebx
or edx, dword [esp + 0xc]
mov edi, esi
mov esi, dword [esp + 0x24]
mov ebx, edx
lea ecx, [esi + 0x40]
mov eax, esi
mov edx, edi
mov esi, ebx
cmp ecx, dword [esp + 0x3c]
jae 0x4ab9b0
mov esi, ecx
mov ecx, edx
or ecx, ebx
jne 0x4ab916
test byte [eax + 0x64], 0x22
je 0x4ab964
mov dword [esp + 0xc], ebx
mov ebx, edx
mov dword [esp + 0x24], esi
mov eax, dword [eax + 0x68]
mov ecx, dword [esp + 0x10]
cmp dword [ecx + 0x200], eax
je 0x4ab8e0
mov edi, dword [ecx + 0x1fc]
xor esi, esi
mov edx, 0
cmp edi, 2
jl 0x4ab8e7
dec edi
xor ecx, ecx
mov esi, dword [esp + 0x10]
nop dword [eax + eax]
cmp dword [esi + ecx*4 + 0x204], eax
je 0x4ab96a
inc ecx
cmp edi, ecx
jne 0x4ab950
xor esi, esi
xor edx, edx
jmp 0x4ab8e7
xor edi, edi
xor ebx, ebx
jmp 0x4ab8f5
inc cl
xor edx, edx
mov eax, 1
shld edx, eax, cl
mov esi, 1
shl esi, cl
test cl, 0x20
cmovne edx, esi
mov eax, 0
cmovne esi, eax
jmp 0x4ab8e7
lea ecx, [esp + 0x68]
mov edx, dword [esp + 0x20]
push dword [esp + 0x1c]
call fcn.004bf040
add esp, 4
xor edi, edi
xor ebx, ebx
jmp 0x4ab9c8
lea ecx, [esp + 0x68]
mov edx, dword [esp + 0x20]
mov ebx, esi
push esi
push edi
push dword [esp + 0x24]
call fcn.004be450
add esp, 0xc
test eax, eax
mov edx, dword [esp + 0x54]
jne 0x4ab9f4
mov eax, dword [esp + 0x6c]
cmp byte [eax + 9], 0
je 0x4aba2b
lea ecx, [esp + 0x68]
mov edx, dword [esp + 0x20]
push ebx
push edi
push dword [esp + 0x24]
call fcn.004bfa90
mov edx, dword [esp + 0x60]
add esp, 0xc
mov esi, dword [esp + 0x2c]
mov ecx, dword [esp + 0x40]
or ecx, dword [esi + 8]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x50]
or ecx, dword [esi + 0xc]
mov dword [esp + 0x50], ecx
cmp eax, 0x65
mov esi, dword [esp + 0x64]
je 0x4ab780
test eax, eax
jne 0x4aba55
cmp byte [esi + 0x57], 0
je 0x4ab793
jmp 0x4aba53
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x40]
or ecx, dword [eax + 8]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x50]
or ecx, dword [eax + 0xc]
mov dword [esp + 0x50], ecx
mov esi, dword [esp + 0x64]
cmp byte [esi + 0x57], 0
je 0x4ab793
xor eax, eax
mov edi, eax
mov eax, dword [esp + 0x2c]
mov edx, dword [eax + 0x34]
cmp edx, dword [esp + 0x60]
je 0x4aba6b
mov ecx, esi
call fcn.0043f4f0
mov ecx, esi
mov esi, dword [esp + 0x2c]
mov edx, esi
call fcn.004c11e0
mov eax, dword [esp + 0x60]
mov dword [esi + 0x34], eax
mov word [esi + 0x2c], 0
mov word [esi + 0x30], 3
mov dword [esi + 0x28], 0
test edi, edi
mov esi, dword [esp + 0x14]
jne 0x4abab5
mov ecx, esi
xor edx, edx
call fcn.004b40c0
mov esi, dword [esp + 0x14]
mov ecx, dword [esp + 8]
mov eax, dword [esp + 0x30]
cmp byte [eax + 0x57], 0
je 0x4abac2
test esi, esi
jne 0x4ac8d0
jmp 0x4ac8ef
cmp dword [esi + 8], 0
je 0x4abdd7
movzx eax, word [esi + 0x36]
inc eax
movsx edx, ax
mov ecx, esi
call fcn.004b40c0
mov ecx, dword [esp + 8]
mov eax, dword [esp + 0x30]
cmp byte [eax + 0x57], 0
jne 0x4ac8d0
jmp 0x4abdd1
cmp dword [esp + 0x1c], 0
mov eax, dword [esp + 0x34]
jne 0x4ab67b
or byte [esi + 0x2c], 0x80
mov ecx, dword [ebp + 0x10]
mov dword [esi + 8], ecx
jmp 0x4ab67b
mov dword [esp + 0x20], eax
mov ecx, dword [eax + 0x30]
lea edx, [ebx + 0x58]
mov eax, dword [esp + 0x70]
mov dword [eax + 0x28], 0
mov dword [esp + 0xc], eax
mov word [eax + 0x2e], 0
mov dword [esp + 0x80], edx
mov dword [esp + 0x3c], edx
mov dword [esp + 0x84], edx
mov byte [esp + 0x98], 0
movdqa xmm0, xmmword [0x5293b0]
movdqu xmmword [esp + 0x88], xmm0
mov dword [esp + 0x24], ecx
mov dword [esp + 0x9c], ecx
mov word [esp + 0x99], 0x101
lea ecx, [esp + 0x80]
call fcn.004be080
test eax, eax
je 0x4abb9d
lea esi, [esp + 0x80]
mov ecx, dword [eax + 0x20]
or ecx, dword [eax + 0x24]
je 0x4abd48
mov ecx, esi
call fcn.004be080
test eax, eax
jne 0x4abb86
mov esi, dword [edi + 8]
test esi, esi
mov ecx, dword [esp + 8]
je 0x4abd70
lea edi, [esp + 0x80]
jmp 0x4abbd6
mov ecx, dword [esp + 0x10]
movzx eax, word [esi + 0x32]
cmp ecx, eax
mov eax, ecx
mov ecx, dword [esp + 8]
je 0x4ac908
mov esi, dword [esi + 0x14]
test esi, esi
je 0x4abd70
cmp byte [esi + 0x36], 0
je 0x4abbcb
cmp dword [esi + 0x24], 0
jne 0x4abbcb
movzx eax, word [esi + 0x32]
cmp ax, 3
ja 0x4abbcb
test ax, ax
je 0x4abd41
movzx eax, byte [esi + 0x37]
and al, 8
shr al, 3
movzx edx, al
shl edx, 7
or edx, 2
xor ecx, ecx
mov dword [esp + 0x2c], edx
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x80], eax
mov dword [esp + 0x84], eax
mov dword [esp + 0x8c], 0
mov byte [esp + 0x98], 0
mov dword [esp + 0x88], 0
mov dword [esp + 0x94], edx
mov dword [esp + 0x90], 0
mov eax, dword [esp + 0x24]
mov dword [esp + 0x9c], eax
mov word [esp + 0x99], 0x101
mov eax, dword [esi + 4]
mov edx, ecx
mov ecx, dword [esi + 0xc]
mov dword [esp + 0x10], edx
movzx eax, word [eax + edx*2]
mov dx, 0xffff
cmp ax, word [ecx + 0x20]
je 0x4abcec
test ax, ax
js 0x4abcad
movsx edx, ax
mov ecx, dword [ecx + 4]
lea edx, [edx + edx*2]
movzx ecx, byte [ecx + edx*4 + 5]
mov byte [esp + 0x98], cl
mov ecx, dword [esi + 0x20]
mov edx, dword [esp + 0x10]
mov ecx, dword [ecx + edx*4]
mov dword [esp + 0x88], ecx
mov edx, eax
jmp 0x4abcec
mov edx, eax
cmp ax, 0xfffe
jne 0x4abcec
mov eax, dword [esi + 0x28]
mov edx, dword [esp + 0x10]
mov ecx, edx
shl ecx, 4
mov eax, dword [eax + ecx + 8]
mov dword [esp + 0x8c], eax
mov eax, dword [esi + 0x20]
mov eax, dword [eax + edx*4]
mov dword [esp + 0x88], eax
mov word [esp + 0xc8], 0xfffe
mov ecx, edi
call fcn.004be3b0
jmp 0x4abcfb
mov word [esp + 0xc8], dx
mov ecx, edi
call fcn.004be080
test eax, eax
je 0x4abbb5
mov ecx, dword [eax + 0x20]
or ecx, dword [eax + 0x24]
je 0x4abd1b
mov ecx, edi
call fcn.004be080
test eax, eax
jne 0x4abd03
jmp 0x4abbb5
mov ecx, dword [esp + 0xc]
mov ecx, dword [ecx + 0x34]
mov edx, dword [esp + 0x10]
mov dword [ecx + edx*4], eax
mov ecx, edx
inc ecx
movzx eax, word [esi + 0x32]
cmp ecx, eax
mov edx, dword [esp + 0x2c]
jb 0x4abc0d
jmp 0x4abbb9
xor ecx, ecx
jmp 0x4abbb9
mov edx, dword [esp + 0xc]
mov dword [edx + 0x28], 0x1101
mov ecx, dword [edx + 0x34]
mov dword [ecx], eax
mov word [edx + 0x2c], 1
mov word [edx + 0x18], 1
mov ax, 0x21
mov ecx, dword [esp + 8]
mov word [edx + 0x14], ax
mov edx, dword [esp + 0xc]
cmp dword [edx + 0x28], 0
je 0x4ab6de
mov word [edx + 0x16], 1
mov dword [ebx + 0x350], edx
mov dword [edx + 0xc], 0
mov dword [edx + 8], 1
mov eax, dword [esp + 0x24]
mov dword [ebx + 0x304], eax
mov word [ebx + 0x36], 1
mov eax, dword [ebx + 8]
test eax, eax
je 0x4abdb5
movzx eax, byte [eax]
mov byte [ebx + 0x31], al
test byte [ebx + 0x2d], 1
je 0x4abdbf
mov byte [ebx + 0x33], 1
cmp byte [esp + 0x99], 2
jb 0x4abdcd
or byte [edx + 0x2a], 0x20
mov esi, dword [esp + 0x14]
cmp dword [esi + 8], 0
jne 0x4abdef
mov eax, dword [esp + 0x30]
test byte [eax + 0x21], 0x10
je 0x4abdef
mov dword [esi + 0x54], 0xffffffff
mov dword [esi + 0x50], 0xffffffff
cmp dword [ecx + 0x24], 0
jne 0x4ac8d0
movzx eax, byte [esi + 0x30]
mov dword [esp + 0x20], 0xffffffff
test dword [esp + 0x58], 0x400
mov ebx, esi
jne 0x4abe59
cmp dword [ebp + 0x10], 0
mov edi, dword [esp + 0x30]
mov ecx, dword [esp + 0x34]
mov esi, dword [esp + 0x44]
je 0x4abe6f
cmp al, 2
jb 0x4abe6f
mov eax, dword [edi + 0x50]
mov dword [esp + 0x20], 0xffffffff
mov dword [esp + 0x1c], 0xffffffff
test eax, 0x100
jne 0x4abe7e
mov ecx, ebx
call fcn.004b4cf0
mov dword [esp + 0x20], eax
mov dword [esp + 0x1c], edx
movzx eax, byte [ebx + 0x30]
movzx ecx, al
jmp 0x4abe77
mov dword [esp + 0x1c], 0xffffffff
mov edi, dword [esp + 0x30]
mov ecx, dword [esp + 0x34]
mov esi, dword [esp + 0x44]
jmp 0x4abe77
mov dword [esp + 0x1c], 0xffffffff
cmp al, 2
jb 0x4abe92
mov eax, dword [edi + 0x50]
mov dword [esp + 0x34], ecx
test eax, 0x80000
jne 0x4abe96
mov ecx, ebx
call fcn.004b5120
jmp 0x4abe96
mov dword [esp + 0x34], ecx
movsx eax, word [ebx + 0x36]
mov ecx, dword [ebx]
add dword [ecx + 0x88], eax
movzx eax, word [esp + 0x58]
mov dword [esp + 0x40], eax
test al, 4
jne 0x4ac81f
mov dword [esp + 0x38], 0
cmp dword [esp + 0x34], 0
jle 0x4ac876
mov eax, dword [esp + 0x28]
add eax, 0x6c
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x40]
and eax, 0x20
mov dword [esp + 0x54], eax
sete al
cmp dword [ebp + 0x1c], 0
sete cl
or cl, al
mov byte [esp + 0x50], cl
xor eax, eax
jmp 0x4abf30
mov ecx, dword [esi + 0x68]
mov edx, dword [esi + 0x6c]
lea edx, [edx + edx*4]
mov byte [ecx + edx*4 - 0x13], 0xf8
mov dword [ecx + edx*4 - 4], eax
mov edx, dword [esp + 0xc]
and byte [edx + 0x28], 0xbf
mov byte [ebx + 0x31], 0
mov byte [ebx + 0x33], 3
mov edi, dword [esp + 0x30]
mov ecx, dword [esp + 8]
mov esi, dword [esp + 0x44]
mov eax, dword [esp + 0x3c]
inc eax
add esi, 0x60
cmp eax, dword [esp + 0x34]
je 0x4ac67e
mov dword [esp + 0x3c], eax
movzx ecx, byte [esi + 0x3c]
shl ecx, 6
mov eax, dword [esp + 0x18]
mov dword [esp + 0x24], ecx
mov eax, dword [eax + ecx + 0x18]
mov dword [esp + 0x10], eax
mov eax, dword [eax + 0x3c]
test eax, eax
je 0x4abf6c
mov ecx, dword [edi + 0x10]
add ecx, 0xc
mov ebx, 0xffffffff
nop dword [eax]
inc ebx
lea edx, [ecx + 0x10]
cmp dword [ecx], eax
mov ecx, edx
jne 0x4abf60
jmp 0x4abf71
mov ebx, 0xffff8000
mov edx, dword [esi + 0x50]
mov eax, dword [esp + 0x10]
test byte [eax + 0x1d], 0x40
mov dword [esp + 0x44], esi
mov dword [esp + 0xc], edx
jne 0x4ac039
mov eax, dword [esp + 0x10]
movzx ecx, byte [eax + 0x2b]
cmp cl, 2
je 0x4ac039
mov eax, dword [edx + 0x28]
test eax, 0x400
jne 0x4abff1
cmp cl, 1
je 0x4ac039
and eax, 0x40
or eax, dword [esp + 0x54]
je 0x4abfca
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x24]
test byte [eax + ecx + 0x2c], 0x50
je 0x4ac610
mov esi, dword [esp + 0x14]
cmp byte [esi + 0x32], 0
je 0x4ac574
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x24]
mov eax, dword [edx + ecx + 0x30]
mov dword [esi + 0x18], eax
mov eax, 0x71
jmp 0x4ac581
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x34]
xor eax, eax
test ecx, ecx
je 0x4ac00d
cmp dword [ecx], edi
je 0x4ac00b
mov ecx, dword [ecx + 0x18]
test ecx, ecx
jne 0x4abffe
jmp 0x4ac00d
mov eax, ecx
mov ecx, dword [esp + 0x28]
mov edx, 0xad
push 0xfffffffffffffff5
push eax
push 0
push 0
mov eax, dword [esp + 0x28]
mov edi, dword [esp + 0x34]
push dword [eax + edi + 0x30]
call fcn.00493a50
add esp, 0x14
mov edx, dword [esp + 0xc]
mov edi, dword [esp + 0x30]
test byte [edx + 0x29], 2
je 0x4ac1f6
mov edi, dword [edx + 0x20]
mov eax, dword [esp + 0x10]
test byte [eax + 0x1c], 0x80
jne 0x4ac09a
mov eax, dword [esp + 0x14]
cmp byte [eax + 0x32], 0
je 0x4ac0bd
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x24]
add eax, ecx
add eax, 0x18
mov eax, dword [eax]
mov ecx, dword [eax + 8]
mov eax, dword [ebp + 0x1c]
test ecx, ecx
je 0x4ac08c
mov eax, dword [ebp + 0x1c]
cmp ecx, edi
je 0x4ac08c
mov eax, dword [ebp + 0x1c]
nop dword [eax]
inc eax
mov ecx, dword [ecx + 0x14]
test ecx, ecx
je 0x4ac08c
cmp ecx, edi
jne 0x4ac080
mov ecx, dword [esp + 0x14]
mov dword [ecx + 0x1c], eax
mov ecx, 0x71
jmp 0x4ac0de
cmp dword [esp + 0x54], 0
je 0x4ac050
movzx eax, word [edi + 0x37]
and eax, 3
cmp ax, 2
jne 0x4ac050
mov eax, dword [esi + 4]
mov dword [esi + 8], eax
mov edi, dword [esp + 0x30]
jmp 0x4ac1f6
mov ecx, 0x65
mov eax, dword [ebp + 0x1c]
cmp byte [esp + 0x50], 0
je 0x4ac0de
mov edx, dword [esp + 8]
mov eax, dword [edx + 0x28]
lea ecx, [eax + 1]
mov dword [edx + 0x28], ecx
mov ecx, 0x70
mov dword [esp + 0x2c], ecx
mov dword [esi + 8], eax
mov esi, dword [edi + 0x2c]
mov ecx, dword [esp + 0x28]
mov edx, dword [ecx + 0x6c]
cmp dword [ecx + 0x70], edx
jle 0x4ac131
mov dword [esp + 0x4c], esi
lea esi, [edx + 1]
mov dword [ecx + 0x6c], esi
mov esi, dword [ecx + 0x68]
lea ecx, [edx + edx*4]
mov edx, dword [esp + 0x2c]
mov byte [esi + ecx*4], dl
mov word [esi + ecx*4 + 2], 0
mov dword [esi + ecx*4 + 4], eax
mov eax, dword [esp + 0x4c]
mov dword [esi + ecx*4 + 8], eax
mov dword [esi + ecx*4 + 0xc], ebx
mov dword [esi + ecx*4 + 0x10], 0
mov byte [esi + ecx*4 + 1], 0
jmp 0x4ac140
mov edx, dword [esp + 0x2c]
push ebx
push esi
push eax
call fcn.004747e0
add esp, 0xc
mov ecx, dword [esp + 8]
mov esi, dword [ecx + 8]
mov edx, edi
call fcn.00493ff0
test eax, eax
mov edi, dword [esp + 0x30]
mov edx, dword [esp + 0xc]
je 0x4ac191
mov ecx, dword [esi]
cmp byte [ecx + 0x57], 0
je 0x4ac17b
cmp dword [ecx + 0x210], 0
jne 0x4ac191
dec dword [eax]
jne 0x4ac191
mov ecx, dword [eax + 0xc]
mov edx, eax
call fcn.0043f4f0
jmp 0x4ac18d
mov ecx, dword [esi + 0x68]
mov edx, dword [esi + 0x6c]
lea edx, [edx + edx*4]
mov byte [ecx + edx*4 - 0x13], 0xf8
mov dword [ecx + edx*4 - 4], eax
mov edx, dword [esp + 0xc]
movd xmm0, dword [edx + 0x28]
pshufd xmm0, xmm0, 0
pand xmm0, xmmword [0x5293c0]
movdqa xmm1, xmm0
pxor xmm2, xmm2
pcmpeqd xmm1, xmm2
pcmpgtd xmm0, xmm2
shufps xmm0, xmm1, 1
shufps xmm0, xmm1, 0xe2
pslld xmm0, 0x1f
movmskps eax, xmm0
cmp al, 0xf
jne 0x4ac1f6
mov eax, dword [esp + 0x14]
test byte [eax + 0x2c], 1
jne 0x4ac1f6
mov eax, dword [esp + 0x14]
cmp byte [eax + 0x33], 2
je 0x4ac1f6
mov eax, dword [esp + 0x48]
mov eax, dword [eax]
test eax, eax
jle 0x4ac1f6
mov ecx, dword [esp + 0x28]
mov ecx, dword [ecx + 0x68]
lea eax, [eax + eax*4]
mov word [ecx + eax*4 - 0x12], 2
test ebx, ebx
js 0x4ac228
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 0x74]
test eax, eax
cmove eax, ecx
mov edx, dword [eax + 0x54]
mov esi, 1
mov ecx, ebx
shl esi, cl
bt edx, ebx
jb 0x4ac228
or edx, esi
mov dword [eax + 0x54], edx
cmp ebx, 1
jne 0x4ac228
mov ecx, eax
call fcn.004447e0
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x24]
test byte [eax + ecx + 0x2c], 0x10
mov ecx, dword [esp + 8]
mov ebx, dword [esp + 0x14]
mov esi, dword [esp + 0x44]
je 0x4abf1e
mov eax, dword [ebx]
mov ecx, dword [eax]
mov edx, 0x24
push 0
call fcn.0043f5f0
add esp, 4
test eax, eax
je 0x4ac2d7
mov edi, eax
mov eax, dword [ebx + 0x48]
mov dword [edi], eax
mov dword [edi + 8], 0x14
mov dword [edi + 0xc], 0
mov dword [ebx + 0x48], edi
mov eax, esi
mov esi, edi
add esi, 0x10
mov dword [eax + 0x38], esi
mov edx, dword [esp + 8]
mov eax, dword [edx + 0x28]
lea ecx, [eax + 1]
mov dword [edx + 0x28], ecx
mov dword [edi + 0x10], eax
mov eax, dword [edx + 0x2c]
inc eax
mov dword [edx + 0x2c], eax
mov dword [edi + 0x14], eax
mov ebx, dword [esp + 0x28]
mov ecx, dword [ebx + 0x6c]
cmp dword [ebx + 0x70], ecx
jle 0x4ac2eb
lea edx, [ecx + 1]
mov dword [ebx + 0x6c], edx
mov edx, dword [ebx + 0x68]
lea ecx, [ecx + ecx*4]
mov dword [edx + ecx*4], 0x4d
mov dword [edx + ecx*4 + 4], 0x10000
mov dword [edx + ecx*4 + 8], eax
mov dword [edx + ecx*4 + 0xc], 0
mov dword [edx + ecx*4 + 0x10], 0
jmp 0x4ac302
mov dword [esi + 0x38], 0
mov edi, dword [esp + 0x30]
mov ecx, dword [esp + 8]
jmp 0x4abf1e
mov ecx, ebx
mov edx, 0x4d
push 0
push eax
push 0x10000
call fcn.004747e0
add esp, 0xc
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 0x2c]
inc eax
mov dword [ecx + 0x2c], eax
mov dword [edi + 0x18], eax
mov ecx, dword [ebx + 0x6c]
cmp dword [ebx + 0x70], ecx
mov edi, ebx
jle 0x4ac34b
lea edx, [ecx + 1]
mov dword [edi + 0x6c], edx
mov edx, dword [edi + 0x68]
lea ecx, [ecx + ecx*4]
mov dword [edx + ecx*4], 0x4b
mov dword [edx + ecx*4 + 4], 0
mov dword [edx + ecx*4 + 8], eax
mov dword [edx + ecx*4 + 0xc], 0
mov dword [edx + ecx*4 + 0x10], 0
jmp 0x4ac35f
mov ecx, edi
mov edx, 0x4b
push 0
push eax
push 0
call fcn.004747e0
add esp, 0xc
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
test byte [eax + 0x1c], 0x80
jne 0x4ac3a8
mov eax, dword [esi]
mov ecx, dword [edi + 0x6c]
cmp dword [edi + 0x70], ecx
jle 0x4ac3d2
lea edx, [ecx + 1]
mov dword [edi + 0x6c], edx
mov edx, dword [edi + 0x68]
lea ecx, [ecx + ecx*4]
mov dword [edx + ecx*4], 0x76
mov dword [edx + ecx*4 + 4], eax
mov dword [edx + ecx*4 + 8], 1
mov dword [edx + ecx*4 + 0xc], 0
mov dword [edx + ecx*4 + 0x10], 0
jmp 0x4ac3e6
mov eax, dword [eax + 8]
xor edi, edi
test eax, eax
je 0x4ac4cb
movzx ecx, word [eax + 0x37]
and ecx, 3
cmp cx, 2
je 0x4ac4c9
mov eax, dword [eax + 0x14]
test eax, eax
jne 0x4ac3b5
jmp 0x4ac4cb
mov ecx, edi
mov edx, 0x76
push 0
push 1
push eax
call fcn.004747e0
add esp, 0xc
mov eax, dword [esp + 8]
mov edi, dword [eax]
mov ecx, edi
mov edx, 0x19
push 0
call fcn.0043f5f0
add esp, 4
test eax, eax
je 0x4ac459
mov ecx, eax
add ecx, 0x18
mov dword [eax + 0x10], ecx
mov dword [eax + 6], 0x10001
movzx ecx, byte [edi + 0x54]
mov byte [eax + 4], cl
mov dword [eax + 0xc], edi
mov dword [eax], 1
mov dword [eax + 0x14], 0
mov byte [eax + 0x18], 0
mov edx, dword [esp + 0x28]
mov ecx, dword [edx]
cmp byte [ecx + 0x57], 0
je 0x4ac569
cmp dword [ecx + 0x210], 0
mov edx, dword [esp + 0xc]
jne 0x4abf06
mov dword [eax], 0
mov ecx, edi
jmp 0x4ac55d
cmp byte [edi + 0x57], 0
mov edx, dword [esp + 0xc]
jne 0x4abf06
cmp byte [edi + 0x58], 0
jne 0x4abf06
mov byte [edi + 0x57], 1
cmp dword [edi + 0xc4], 0
jle 0x4ac488
mov dword [edi + 0x128], 1
inc dword [edi + 0x130]
mov word [edi + 0x134], 0
mov eax, dword [edi + 0x108]
test eax, eax
je 0x4abf06
push str.out_of_memory
push eax
call fcn.00434540
mov edx, dword [esp + 0x14]
add esp, 8
mov eax, dword [edi + 0x108]
mov dword [eax + 0xc], 7
jmp 0x4abf06
mov edi, eax
mov eax, dword [esi]
movzx esi, word [edi + 0x32]
mov ecx, dword [esp + 0x28]
mov ebx, dword [ecx + 0x6c]
cmp dword [ecx + 0x70], ebx
jle 0x4ac50a
lea edx, [ebx + 1]
mov dword [ecx + 0x6c], edx
mov edx, dword [ecx + 0x68]
lea ecx, [ebx + ebx*4]
mov dword [edx + ecx*4], 0x76
mov dword [edx + ecx*4 + 4], eax
mov dword [edx + ecx*4 + 8], esi
mov dword [edx + ecx*4 + 0xc], 0
mov dword [edx + ecx*4 + 0x10], 0
jmp 0x4ac51b
mov edx, 0x76
push 0
push esi
push eax
call fcn.004747e0
add esp, 0xc
mov ebx, dword [esp + 0x14]
mov ecx, dword [esp + 8]
mov esi, dword [ecx + 8]
mov edx, edi
call fcn.00493ff0
test eax, eax
mov edx, dword [esp + 0xc]
je 0x4abf06
mov ecx, dword [esi]
cmp byte [ecx + 0x57], 0
je 0x4abef0
cmp dword [ecx + 0x210], 0
jne 0x4abf06
dec dword [eax]
jne 0x4abf06
mov ecx, dword [eax + 0xc]
mov edx, eax
call fcn.0043f4f0
jmp 0x4abf02
mov ecx, dword [edx + 0x68]
mov edx, dword [edx + 0x6c]
jmp 0x4abef6
mov eax, 0x70
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x24]
mov edx, dword [edx + ecx + 0x30]
mov ecx, dword [esp + 8]
push eax
push dword [esp + 0x14]
push ebx
call fcn.00493c10
add esp, 0xc
cmp byte [esi + 0x32], 0
mov edx, dword [esp + 0xc]
jne 0x4ac650
mov eax, dword [esp + 0x10]
cmp word [eax + 0x22], 0x3f
jg 0x4ac650
mov eax, dword [esp + 0x10]
test byte [eax + 0x1c], 0xe0
jne 0x4ac650
test dword [edx + 0x28], 0x404000
jne 0x4ac650
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x24]
mov ecx, dword [eax + edx + 0x38]
mov edx, dword [eax + edx + 0x3c]
mov eax, ecx
or eax, edx
je 0x4ac632
mov edi, ecx
xor eax, eax
mov esi, edx
mov dword [esp + 0x2c], ecx
mov edi, edx
shld edi, ecx, 0x1f
shr esi, 1
inc eax
mov ecx, 1
cmp ecx, dword [esp + 0x2c]
mov ecx, 0
sbb ecx, edx
mov ecx, edi
mov edx, esi
jb 0x4ac5eb
jmp 0x4ac634
mov ecx, dword [esp + 8]
mov edx, ebx
mov eax, dword [esp + 0x10]
push dword [eax]
push 0
push dword [eax + 0x14]
call fcn.00493de0
mov edx, dword [esp + 0x18]
add esp, 0xc
jmp 0x4ac039
xor eax, eax
mov ecx, dword [esp + 0x28]
mov edx, 0xffffffff
push 0xfffffffffffffffd
push eax
call fcn.00434960
add esp, 8
mov edi, dword [esp + 0x30]
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 0x48]
mov eax, dword [eax]
test eax, eax
mov esi, dword [esp + 0x44]
jle 0x4ac039
mov ecx, dword [esp + 0x28]
mov ecx, dword [ecx + 0x68]
lea eax, [eax + eax*4]
mov edx, dword [esp + 0x38]
mov word [ecx + eax*4 - 0x12], dx
mov edx, dword [esp + 0xc]
jmp 0x4ac039
mov eax, dword [esp + 0x48]
mov eax, dword [eax]
mov dword [ebx + 0x38], eax
cmp byte [edi + 0x57], 0
mov esi, ebx
jne 0x4ac8d0
mov ebx, esi
add ebx, 0x300
xor edi, edi
jmp 0x4ac71e
mov ecx, dword [esp + 0x14]
mov edx, edi
push dword [esp + 0x1c]
push dword [esp + 0x24]
push ebx
call fcn.004b6120
add esp, 0xc
mov eax, dword [esp + 0x30]
cmp byte [eax + 0x57], 0
mov esi, dword [esp + 0x14]
jne 0x4ac8d0
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x18]
push dword [esp + 0x40]
push ebx
call fcn.004b6b40
add esp, 8
mov edx, dword [esp + 0x28]
mov eax, dword [edx + 0x6c]
mov dword [ebx + 0x20], eax
mov ecx, dword [esp + 8]
push dword [esp + 0x1c]
push dword [esp + 0x24]
push ebx
push edi
push esi
call fcn.004b7060
mov ecx, dword [esp + 0x1c]
add esp, 0x14
mov dword [esp + 0x20], eax
mov dword [esp + 0x1c], edx
mov eax, dword [ebx + 0x18]
mov dword [esi + 0x20], eax
inc edi
add ebx, 0x60
cmp dword [esp + 0x34], edi
je 0x4ac8f9
cmp dword [ecx + 0x24], 0
mov esi, dword [esp + 0x14]
jne 0x4ac8d0
mov eax, dword [ebx + 0x50]
mov edx, dword [eax + 0x28]
movzx esi, byte [ebx + 0x3c]
shl esi, 6
mov eax, dword [esp + 0x18]
movzx eax, word [eax + esi + 0x2d]
test al, 0x10
je 0x4ac7d8
mov dword [esp + 0x10], edx
test al, 8
jne 0x4ac7b3
mov ecx, dword [esp + 0x28]
mov edx, 0xe
call fcn.004939b0
mov dword [esp + 0x24], eax
mov ecx, dword [esp + 0x28]
mov edx, 9
mov eax, dword [esp + 0x18]
push dword [eax + esi + 0x20]
push dword [eax + esi + 0x24]
call fcn.00474720
add esp, 8
mov eax, dword [esp + 0x28]
mov edx, dword [eax]
mov eax, dword [eax + 0x6c]
mov ecx, 0x53e0e4
cmp byte [edx + 0x57], 0
jne 0x4ac7ae
lea ecx, [eax - 1]
mov edx, dword [esp + 0x24]
test edx, edx
cmovns ecx, edx
lea ecx, [ecx + ecx*4]
shl ecx, 2
mov edx, dword [esp + 0x28]
add ecx, dword [edx + 0x68]
mov dword [ecx + 8], eax
jmp 0x4ac7d0
mov ecx, dword [esp + 0x28]
mov edx, 9
mov eax, dword [esp + 0x18]
push dword [eax + esi + 0x20]
push dword [eax + esi + 0x24]
call fcn.00474720
add esp, 8
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x10]
test edx, 0x404000
mov esi, dword [esp + 0x14]
je 0x4ac6c8
test edx, 0x4000
je 0x4ac69f
movzx eax, byte [ebx + 0x3c]
shl eax, 6
mov edx, dword [esp + 0x18]
add eax, edx
add eax, 8
mov edx, dword [esp + 0x5c]
push ebx
push dword [esp + 0x20]
push dword [esp + 0x28]
push eax
call fcn.004b51d0
add esp, 0x10
jmp 0x4ac6b6
mov eax, dword [ebx + 0x350]
mov ecx, dword [eax + 0x28]
mov dl, 1
test ecx, 0x1000
jne 0x4ac958
test byte [esp + 0x40], 8
je 0x4abeb3
mov edx, dword [esp + 0x18]
mov edx, dword [edx + 0x18]
cmp byte [edx + 0x2b], 1
je 0x4abeb3
mov dl, 2
test byte [esp + 0x40], 0x10
jne 0x4ac954
mov esi, ecx
and esi, 0x2000
mov esi, dword [esp + 0x44]
jne 0x4abeb3
jmp 0x4ac958
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x6c]
mov dword [ebx + 0x38], eax
cmp byte [edi + 0x57], 0
mov esi, ebx
jne 0x4ac8d0
mov eax, dword [esp + 0x28]
add eax, 0x6c
jmp 0x4ac8fd
mov eax, dword [edx]
mov dword [esi + 0x44], eax
mov eax, dword [edx + 4]
mov ecx, dword [edx + 0x38]
mov dword [eax + 0x30], ecx
movups xmm0, xmmword [edx + 0x28]
movups xmmword [eax + 0x20], xmm0
movups xmm0, xmmword [edx + 0x18]
movups xmmword [eax + 0x10], xmm0
movdqu xmm0, xmmword [edx + 8]
movdqu xmmword [eax], xmm0
mov eax, dword [esi]
mov ecx, dword [eax]
call fcn.0043f4f0
mov edx, dword [esi + 0x44]
test edx, edx
jne 0x4ac8a0
mov eax, dword [esi + 0x28]
mov ecx, dword [esp + 8]
mov dword [ecx + 0x88], eax
mov ecx, dword [esp + 0x30]
mov edx, esi
call fcn.004b9ec0
xor eax, eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [esp + 0x48]
mov ecx, dword [eax]
mov eax, dword [esp + 0x14]
mov dword [eax + 0x3c], ecx
jmp 0x4ac8f1
mov dword [esp + 0x10], eax
mov edx, dword [esp + 0xc]
mov dword [edx + 0x28], 0x1201
test byte [esi + 0x37], 0x20
jne 0x4ac935
mov eax, dword [esi + 0x44]
mov edi, dword [esp + 0x20]
and eax, dword [edi + 0x3c]
mov ecx, dword [esi + 0x40]
and ecx, dword [edi + 0x38]
or ecx, eax
mov ecx, dword [esp + 8]
jne 0x4ac93c
mov dword [edx + 0x28], 0x1241
mov eax, dword [esp + 0x10]
mov word [edx + 0x2c], ax
mov word [edx + 0x18], ax
mov dword [edx + 0x20], esi
mov ax, 0x27
jmp 0x4abd6c
mov esi, dword [esp + 0x44]
mov byte [ebx + 0x32], dl
mov edx, dword [esp + 0x18]
mov edx, dword [edx + 0x18]
mov dword [esp + 0x38], 0
test byte [edx + 0x1c], 0x80
jne 0x4abebb
mov edx, ecx
and edx, 0x40
je 0x4abebb
mov edx, dword [esp + 0x58]
and edx, 8
and ecx, 0xffffffbf
mov dword [eax + 0x28], ecx
mov dword [esp + 0x38], edx
jmp 0x4abebb