Function at 0x4a01c0
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 [ecx + 8]
mov ebx, dword [ebp + 0xc]
mov edi, dword [ecx]
pxor xmm0, xmm0
mov dword [esp + 0x74], 0
mov dword [esp + 0x70], 0
mov dword [esp + 0x78], 0
movdqa xmmword [esp + 0x60], xmm0
mov dword [esp + 0x40], eax
movzx eax, word [ebp + 0x14]
test ebx, ebx
je 0x4a020f
xor esi, esi
cmp dword [ebx], 0x3f
cmovle esi, ebx
jmp 0x4a0211
xor esi, esi
mov dword [esp + 0x38], esi
mov dword [esp + 0x68], esi
mov esi, eax
and esi, 0xfffffeff
test byte [edi + 0x4c], 0x10
cmove esi, eax
mov eax, dword [edx]
cmp eax, 0x41
jl 0x4a0244
push 0x40
push str.at_most__d_tables_in_a_join
push ecx
call fcn.0042af90
add esp, 0xc
jmp 0x4a11ea
movzx ebx, si
mov dword [esp + 0x1c], ecx
mov ecx, 1
mov dword [esp + 0xe8], esi
mov dword [esp + 0x18], edx
mov dword [esp + 0x4c], ebx
and ebx, 0x20
cmove ecx, eax
imul eax, ecx, 0x58
mov dword [esp + 0x54], ecx
mov ecx, edi
lea esi, [eax + 0x2ef]
mov dword [esp + 8], eax
and esi, 0xfffffff8
lea edx, [esi + 0x48]
push 0
call fcn.00435490
add esp, 4
cmp byte [edi + 0x51], 0
je 0x4a02a4
test eax, eax
je 0x4a11ea
mov ecx, edi
mov edx, eax
call fcn.004352c0
jmp 0x4a11ea
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x30], edi
mov edi, eax
mov dword [esp + 0x44], ebx
mov ebx, dword [ebp + 0x10]
mov edx, dword [ebp + 8]
mov dword [eax], ecx
mov eax, dword [esp + 0x18]
mov dword [edi + 4], eax
mov eax, dword [esp + 0x38]
mov dword [edi + 8], eax
mov dword [edi + 0x10], edx
mov dword [edi + 0xc], ebx
mov ebx, dword [esp + 0x54]
mov dword [edi + 0x18], 0xffffffff
mov dword [edi + 0x14], 0xffffffff
mov byte [edi + 0x2c], bl
mov eax, dword [ecx + 0x38]
dec eax
mov dword [ecx + 0x38], eax
mov dword [edi + 0x1c], eax
mov dword [edi + 0x20], eax
mov eax, dword [esp + 0xe8]
mov word [edi + 0x28], ax
mov eax, dword [ebp + 0x18]
mov word [edi + 0x2a], ax
mov eax, dword [ecx + 0x84]
mov ecx, dword [esp + 8]
add ecx, 0x48
mov dword [edi + 0x24], eax
mov dword [edi + 0x41], 0
mov dword [edi + 0x31], 0
mov dword [edi + 0x2d], 0
mov dword [edi + 0x39], 0
mov dword [edi + 0x35], 0
mov dword [edi + 0x3d], 0
mov dword [edi + 0x44], 0
lea eax, [edi + 0x2e8]
push ecx
push 0
mov dword [esp + 0x58], eax
push eax
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
lea ecx, [edi + 0x48]
lea eax, [edi + esi]
mov dword [esp + 0x60], edi
lea edx, [edi + 0x60]
mov dword [esp + 0x10], edi
mov dword [esp + 0x64], ecx
mov dword [esp + 0x6c], eax
lea eax, [edi + esi + 0x38]
mov dword [esp + 0x48], ecx
mov dword [edi + esi + 0x30], eax
mov word [edi + esi + 0x28], 0
mov word [edi + esi + 0x2c], 3
mov dword [edi + esi + 0x24], 0
mov dword [edi + 0x1e4], 0
mov dword [edi + 0x48], edi
mov byte [edi + 0x51], 0
mov dword [edi + 0x4c], 0
mov dword [edi + 0x54], 0
mov dword [edi + 0x58], 8
mov dword [edi + 0x5c], edx
mov edx, dword [ebp + 8]
push 0x2c
call fcn.004a8aa0
add esp, 4
test ebx, ebx
je 0x4a06a6
mov ebx, dword [esp + 0x18]
xor eax, eax
jmp 0x4a040d
push dword [esp + 0x24]
push dword [esi]
push str.too_many_arguments_on__s_____max__d
push dword [esp + 0x28]
call fcn.0042af90
add esp, 0x10
nop word cs:[eax + eax]
nop dword [eax + eax]
mov eax, dword [esp + 8]
inc eax
cmp eax, dword [ebx]
jge 0x4a06e3
mov esi, dword [esp + 0x10]
mov dword [esp + 8], eax
lea eax, [eax + eax*8]
mov ecx, dword [ebx + eax*8 + 0x30]
mov edx, dword [esi + 0x1e4]
lea edi, [edx + 1]
mov dword [esi + 0x1e4], edi
mov dword [esi + edx*4 + 0x1e8], ecx
test byte [ebx + eax*8 + 0x2d], 4
je 0x4a0400
mov ecx, dword [ebx + eax*8 + 0x48]
test ecx, ecx
mov dword [esp + 0xc], ecx
je 0x4a0400
mov ecx, dword [esp + 0xc]
cmp dword [ecx], 0
jle 0x4a0400
lea ecx, [ebx + eax*8 + 0x30]
mov eax, dword [ebx + eax*8 + 0x18]
xor edi, edi
mov dword [esp + 0x24], 0
mov dword [esp + 0x14], ecx
mov esi, eax
movsx eax, word [eax + 0x2a]
cmp edi, eax
jge 0x4a03da
mov ecx, dword [esi + 4]
lea edx, [edi + edi*4]
lea ecx, [ecx + edx*4 + 0x10]
nop dword [eax]
test byte [ecx], 2
jne 0x4a04a0
inc edi
add ecx, 0x14
cmp eax, edi
jne 0x4a0480
jmp 0x4a03da
mov eax, dword [esp + 0x1c]
mov edx, 0x34
mov ecx, dword [eax]
push 0
call fcn.00435490
add esp, 4
test eax, eax
je 0x4a0400
mov edx, eax
mov dword [eax], 0
mov dword [eax + 0x20], 0
mov dword [eax + 4], 0
mov dword [eax + 0xc], 0
mov dword [eax + 8], 0
mov dword [eax + 0x14], 0
mov dword [eax + 0x10], 0
mov dword [eax + 0x1c], 0
mov dword [eax + 0x24], 0
mov dword [eax + 0x2c], 0
mov dword [eax + 0x28], 0
mov dword [eax + 0x30], 0
mov byte [eax], 0xa4
mov word [eax + 0x22], 0xffff
mov dword [eax + 0x18], 1
mov eax, dword [esp + 0x14]
mov ecx, esi
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x20], edx
mov eax, dword [eax]
mov dword [edx + 0x1c], eax
mov eax, dword [esp + 0x24]
mov word [edx + 0x20], di
mov dword [edx + 0x2c], esi
shl eax, 4
mov edx, dword [ecx + eax + 4]
test edx, edx
je 0x4a0563
mov ebx, dword [esp + 0x1c]
mov ecx, dword [ebx]
push 0
push 0
call fcn.0048fa30
add esp, 8
mov dword [esp + 0x28], eax
jmp 0x4a056f
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x28], 0
mov ecx, dword [ebx]
mov edx, 0x34
push 0
call fcn.00435490
add esp, 4
mov ebx, eax
test eax, eax
je 0x4a062f
mov eax, dword [esp + 0x28]
mov dword [ebx], 0
mov dword [ebx + 0x20], 0
mov dword [ebx + 4], 0
mov dword [ebx + 0xc], 0
mov dword [ebx + 8], 0
mov dword [ebx + 0x14], 0
mov dword [ebx + 0x10], 0
mov dword [ebx + 0x1c], 0
mov dword [ebx + 0x18], 0
mov dword [ebx + 0x24], 0
mov dword [ebx + 0x2c], 0
mov dword [ebx + 0x28], 0
mov dword [ebx + 0x30], 0
mov byte [ebx], 0xab
mov word [ebx + 0x22], 0xffff
test eax, eax
je 0x4a0605
mov dword [ebx + 0xc], eax
mov ecx, 0x200104
mov eax, dword [eax + 4]
and eax, ecx
mov dword [ebx + 4], eax
mov ecx, ebx
call fcn.004c5fa0
mov ecx, dword [esp + 0x1c]
mov eax, dword [ecx]
mov eax, dword [eax + 0x78]
cmp eax, dword [ebx + 0x18]
jge 0x4a064a
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push ecx
call fcn.0042af90
mov ecx, dword [esp + 0x28]
add esp, 0xc
jmp 0x4a064a
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x1c]
test edx, edx
je 0x4a064a
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax]
call fcn.00469b50
mov ecx, dword [esp + 0x1c]
mov edx, 0x35
push ebx
push dword [esp + 0x24]
call fcn.00472b00
add esp, 8
mov ecx, dword [esp + 0x14]
mov ebx, eax
test byte [ecx - 4], 8
je 0x4a0675
mov eax, dword [esp + 0x14]
mov ecx, ebx
mov edx, dword [eax]
call fcn.004995d0
mov ecx, dword [esp + 0x48]
inc edi
mov edx, ebx
push 1
call fcn.004ad850
add esp, 4
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0xc]
mov ebx, dword [esp + 0x18]
inc ecx
cmp ecx, dword [eax]
mov eax, esi
mov dword [esp + 0x24], ecx
jl 0x4a0464
jmp 0x4a0400
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x4a06b9
mov eax, dword [esp + 0x10]
mov cl, byte [ecx]
add eax, 0x2d
mov byte [eax], cl
test dword [esp + 0x4c], 0x100
mov eax, dword [esp + 0x1c]
mov ebx, dword [esp + 0x18]
je 0x4a06d3
mov ecx, dword [esp + 0x10]
mov byte [ecx + 0x2f], 1
push str.SCAN_CONSTANT_ROW
push 0
push eax
call fcn.0048df30
add esp, 0xc
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x48]
mov esi, dword [eax + 0x54]
test esi, esi
jle 0x4a0716
inc esi
nop word cs:[eax + eax]
nop dword [eax]
lea eax, [esi - 2]
mov ecx, ebx
mov edx, edi
push eax
call fcn.004adb00
add esp, 4
dec esi
cmp esi, 1
jg 0x4a0700
mov edi, dword [esp + 0x30]
cmp byte [edi + 0x51], 0
jne 0x4a11cc
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x4c]
cmp dword [eax + 0xc], 0
jle 0x4a0809
xor esi, esi
xor ebx, ebx
jmp 0x4a0771
push 0x10
mov eax, dword [esp + 0x14]
push dword [eax + 0x20]
push dword [edi + esi]
push dword [esp + 0x28]
call fcn.0048b810
mov ecx, dword [esp + 0x5c]
add esp, 0x10
or byte [edi + esi + 0xa], 4
nop dword [eax]
mov eax, dword [esp + 0x64]
inc ebx
add esi, 0x30
cmp ebx, dword [eax + 0xc]
jge 0x4a0809
mov edi, dword [eax + 0x14]
test byte [edi + esi + 0xa], 2
jne 0x4a0760
mov eax, dword [edi + esi + 0x28]
or eax, dword [edi + esi + 0x2c]
jne 0x4a0760
cmp dword [esp + 0x54], 0
je 0x4a073c
mov edx, dword [edi + esi]
pxor xmm0, xmm0
mov dword [esp + 0x94], 0
mov dword [esp + 0x90], 0
mov dword [esp + 0x98], 0
movdqa xmmword [esp + 0x80], xmm0
mov word [esp + 0x94], 1
mov dword [esp + 0x84], 0x4b06f0
mov dword [esp + 0x88], 0x48d190
test edx, edx
je 0x4a073c
lea ecx, [esp + 0x80]
call fcn.0048d1b0
mov ecx, dword [esp + 0x4c]
cmp word [esp + 0x94], 0
jne 0x4a073c
jmp 0x4a0760
mov ebx, dword [esp + 0x18]
test ecx, 0x100
je 0x4a0bd9
cmp dword [ebx], 1
mov edi, dword [esp + 0x48]
jne 0x4a0bc4
mov ecx, dword [ebx + 0x30]
mov eax, dword [ebx + 0x18]
mov dword [esp + 0x20], ecx
mov ecx, dword [ebp + 0x10]
mov dword [esp + 8], eax
mov ecx, dword [ecx]
test ecx, ecx
jle 0x4a08c2
mov eax, dword [esp + 0x20]
xor edx, edx
jmp 0x4a0855
inc edx
cmp edx, ecx
je 0x4a08c2
mov edi, dword [ebp + 0x10]
mov esi, edx
shl esi, 4
mov esi, dword [edi + esi + 4]
jmp 0x4a0878
mov esi, dword [esi + 0x14]
add esi, 4
mov esi, dword [esi]
mov edi, dword [esi + 4]
test edi, 0x41000
je 0x4a08a0
test edi, 0x40000
jne 0x4a0870
add esi, 0xc
mov esi, dword [esi]
jmp 0x4a0878
cmp byte [esi], 0xa4
mov edi, dword [esp + 0x48]
jne 0x4a0850
cmp dword [esi + 0x1c], eax
jne 0x4a0850
cmp word [esi + 0x20], 0
jns 0x4a0850
mov eax, dword [esp + 0x10]
mov byte [eax + 0x2f], 1
jmp 0x4a0bd9
mov eax, dword [esp + 8]
mov esi, dword [eax + 8]
jmp 0x4a08d8
xor edx, edx
movzx eax, word [esi + 0x32]
cmp edx, eax
je 0x4a08b5
mov esi, dword [esi + 0x14]
test esi, esi
je 0x4a0bc4
cmp byte [esi + 0x36], 0
je 0x4a08d5
cmp word [esi + 0x32], 0
je 0x4a08cb
xor edx, edx
mov dword [esp + 0x24], esi
jmp 0x4a090e
test edi, edi
mov edi, dword [esp + 0x48]
je 0x4a0a82
mov edx, dword [esp + 8]
movzx eax, word [esi + 0x32]
inc edx
cmp edx, eax
jae 0x4a08cd
mov eax, dword [esp + 0x20]
pcmpeqd xmm0, xmm0
mov dword [esp + 8], edx
movdqa xmmword [esp + 0x80], xmm0
movdqa xmmword [esp + 0x90], xmm0
movdqa xmmword [esp + 0xd0], xmm0
movdqa xmmword [esp + 0xc0], xmm0
movdqa xmmword [esp + 0xb0], xmm0
movdqa xmmword [esp + 0xa0], xmm0
mov dword [esp + 0x80], edi
mov dword [esp + 0x84], edi
mov dword [esp + 0x8c], 0
mov byte [esp + 0x90], 0
mov dword [esp + 0x88], 0
mov dword [esp + 0x94], 2
mov dword [esp + 0x98], 0
mov dword [esp + 0x9c], eax
mov word [esp + 0x91], 0x101
mov eax, dword [esi + 4]
movsx eax, word [eax + edx*2]
cmp eax, 0xfffffffe
jne 0x4a0a30
mov eax, dword [esi + 0x28]
mov ecx, edx
shl ecx, 4
mov eax, dword [eax + ecx + 4]
lea ecx, [esp + 0x80]
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
call fcn.004b0a70
test eax, eax
je 0x4a0a82
xor edi, edi
jmp 0x4a0a19
test edi, edi
cmove edi, eax
lea ecx, [esp + 0x80]
call fcn.004b0720
test eax, eax
je 0x4a08f5
mov ecx, dword [eax + 0x20]
or ecx, dword [eax + 0x24]
jne 0x4a0a05
test byte [eax + 0xc], 2
je 0x4a0a00
mov edi, dword [esp + 0x48]
jmp 0x4a0901
mov edx, dword [esi + 0xc]
mov cx, 0xffff
cmp ax, word [edx + 0x28]
je 0x4a0a66
test ax, ax
js 0x4a0a64
mov ecx, dword [edx + 4]
lea edx, [eax + eax*4]
mov cl, byte [ecx + edx*4 + 0xd]
mov edx, dword [esp + 8]
mov byte [esp + 0x90], cl
mov ecx, dword [esi + 0x20]
mov ecx, dword [ecx + edx*4]
mov dword [esp + 0x88], ecx
mov ecx, eax
mov word [esp + 0xc8], cx
lea ecx, [esp + 0x80]
call fcn.004b0720
test eax, eax
jne 0x4a09f1
mov ecx, dword [ebp + 0x10]
cmp dword [ecx], 0
jle 0x4a0bbb
mov eax, dword [esi + 0x20]
mov edx, dword [esp + 8]
xor esi, esi
mov edi, dword [eax + edx*4]
mov dword [esp + 0x14], edi
jmp 0x4a0ab0
mov ecx, dword [ebp + 0x10]
inc esi
mov ebx, dword [esp + 0x18]
cmp esi, dword [ecx]
jge 0x4a0bb3
mov eax, esi
shl eax, 4
mov edx, dword [ecx + eax + 4]
mov ecx, dword [edx + 4]
mov eax, edx
test ecx, 0x41000
je 0x4a0af0
mov eax, edx
jmp 0x4a0ae0
add eax, 0xc
mov eax, dword [eax]
mov ecx, dword [eax + 4]
test ecx, 0x41000
je 0x4a0af0
test ecx, 0x40000
je 0x4a0ad0
mov eax, dword [eax + 0x14]
add eax, 4
jmp 0x4a0ad3
cmp byte [eax], 0xa4
jne 0x4a0aa0
movzx ecx, word [eax + 0x20]
mov ebx, dword [esp + 0x24]
mov edi, dword [esp + 8]
mov word [esp + 0xc], cx
mov ebx, dword [ebx + 4]
movzx ecx, word [esp + 0xc]
cmp cx, word [ebx + edi*2]
mov edi, dword [esp + 0x14]
jne 0x4a0aa0
mov ecx, dword [esp + 0x20]
cmp dword [eax + 0x1c], ecx
jne 0x4a0aa0
mov ecx, dword [esp + 0x1c]
call fcn.0046dea0
test eax, eax
jne 0x4a0b3b
mov eax, dword [esp + 0x1c]
mov eax, dword [eax]
mov eax, dword [eax + 8]
mov eax, dword [eax]
xor ecx, ecx
jmp 0x4a0b64
movzx edx, byte [edx + 0x50ce7b]
cmp dl, byte [ebx + 0x50ce7b]
jne 0x4a0aa0
inc ecx
movzx edx, byte [eax + ecx]
movzx ebx, byte [edi + ecx]
cmp dl, bl
jne 0x4a0b50
test dl, dl
jne 0x4a0b63
mov esi, dword [esp + 0x24]
mov ecx, dword [esp + 8]
mov eax, dword [esi + 4]
movzx eax, word [eax + ecx*2]
test ax, ax
js 0x4a0b98
mov ecx, dword [esi + 0xc]
lea eax, [eax + eax*4]
mov ecx, dword [ecx + 4]
movzx ecx, byte [ecx + eax*4 + 0xc]
jmp 0x4a0ba1
xor ecx, ecx
cmp ax, 0xffff
sete cl
mov ebx, dword [esp + 0x18]
mov edi, dword [esp + 0x48]
test ecx, ecx
jne 0x4a0901
jmp 0x4a0bbb
mov edi, dword [esp + 0x48]
mov esi, dword [esp + 0x24]
mov edx, dword [esp + 8]
jmp 0x4a08cd
cmp dword [esp + 0x38], 0
jne 0x4a0bd9
mov eax, dword [esp + 0x10]
mov ecx, dword [ebp + 0x10]
or byte [eax + 0x28], 0x80
mov dword [eax + 8], ecx
cmp dword [esp + 0x54], 1
jne 0x4a0da5
mov eax, dword [esp + 0x60]
test byte [eax + 0x28], 0x20
jne 0x4a0da5
mov ecx, dword [eax + 4]
mov edi, dword [ecx + 0x18]
cmp dword [edi + 0x38], 0
jne 0x4a0da5
test byte [ecx + 0x2d], 2
jne 0x4a0da5
mov dword [esp + 0x28], ecx
mov ecx, dword [ecx + 0x30]
lea edx, [eax + 0x48]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x6c]
pcmpeqd xmm0, xmm0
mov dword [esp + 0x14], edx
mov dword [eax + 0x24], 0
mov word [eax + 0x2a], 0
movdqa xmmword [esp + 0x80], xmm0
movdqa xmmword [esp + 0x90], xmm0
movdqa xmmword [esp + 0xc0], xmm0
movdqa xmmword [esp + 0xd0], xmm0
movdqa xmmword [esp + 0xb0], xmm0
movdqa xmmword [esp + 0xa0], xmm0
mov dword [esp + 0x80], edx
mov dword [esp + 0x84], edx
mov dword [esp + 0x8c], 0
mov byte [esp + 0x90], 0
mov dword [esp + 0x88], 0
mov dword [esp + 0x94], 0x82
mov dword [esp + 0x98], 0
mov dword [esp + 0x9c], ecx
mov dword [esp + 0x24], ecx
lea ecx, [esp + 0x80]
mov word [esp + 0x91], 0x101
mov dword [esp + 0xc], eax
mov word [esp + 0xc8], 0xffff
call fcn.004b0720
test eax, eax
je 0x4a0d37
xor ebx, ebx
lea esi, [esp + 0x80]
jmp 0x4a0cf9
test ebx, ebx
mov ecx, esi
cmove ebx, eax
call fcn.004b0720
test eax, eax
je 0x4a0d0b
mov ecx, dword [eax + 0x20]
or ecx, dword [eax + 0x24]
jne 0x4a0ce9
test byte [eax + 0xc], 0x82
je 0x4a0ce9
mov ebx, eax
jmp 0x4a0d0f
test ebx, ebx
je 0x4a0d37
mov ecx, dword [esp + 0xc]
mov dword [ecx + 0x24], 0x1101
mov eax, dword [ecx + 0x30]
mov dword [eax], ebx
mov ebx, dword [esp + 0x18]
mov word [ecx + 0x28], 1
mov word [ecx + 0x18], 1
mov word [ecx + 0x14], 0x21
jmp 0x4a0d46
mov esi, dword [edi + 8]
mov ebx, dword [esp + 0x18]
test esi, esi
jne 0x4a12d2
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x20]
cmp dword [eax + 0x24], 0
je 0x4a0da5
mov word [eax + 0x16], 1
mov dword [ecx + 0x330], eax
mov dword [eax + 0xc], 0
mov dword [eax + 8], 1
mov eax, dword [esp + 0x24]
mov dword [ecx + 0x2ec], eax
mov word [ecx + 0x32], 1
mov eax, dword [ecx + 8]
test eax, eax
je 0x4a0d8a
mov al, byte [eax]
mov byte [ecx + 0x2d], al
test byte [ecx + 0x29], 1
mov edi, dword [esp + 0x30]
mov eax, dword [esp + 0x10]
je 0x4a121d
mov byte [ecx + 0x2f], 1
jmp 0x4a121d
mov eax, dword [esp + 0x60]
mov edx, dword [esp + 0x6c]
mov ecx, dword [eax]
mov esi, dword [eax + 4]
mov dword [esp + 0x24], eax
movzx eax, byte [eax + 0x2c]
mov ecx, dword [ecx]
test eax, eax
mov dword [esp + 0x5c], ecx
mov ecx, edx
lea edx, [edx + 0x38]
mov dword [ecx + 0x30], edx
mov word [ecx + 0x28], 0
mov word [ecx + 0x2c], 3
mov dword [ecx + 0x24], 0
mov dword [esp + 0xe4], edx
mov dword [esp + 0x78], 0x4e20
mov dword [esp + 0x34], ecx
je 0x4a10b7
mov edi, dword [esp + 0x30]
lea eax, [eax + eax*8]
xor edx, edx
mov dword [esp + 0x20], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], 0
lea eax, [esi + eax*8 + 8]
add esi, 8
mov dword [esp + 0xc], eax
xor eax, eax
mov dword [esp + 0x14], esi
jmp 0x4a0e71
push str.abbreviated_query_algorithm_search
push 0x1c
call fcn.0041f100
mov edx, dword [esp + 0x60]
mov ecx, dword [esp + 0x3c]
add esp, 8
mov eax, dword [esp + 0x14]
inc edx
add eax, 0x48
cmp eax, dword [esp + 0xc]
mov dword [esp + 0x14], eax
mov al, byte [esp + 0x2f]
jae 0x4a1098
mov ebx, dword [esp + 0x24]
mov byte [ecx + 0x10], dl
add dword [esp + 0x78], 0x3e8
mov dword [esp + 0x58], edx
mov edx, dword [ebx + 0x1e4]
test edx, edx
jle 0x4a0ec0
mov ecx, dword [esp + 0x14]
mov esi, dword [ecx + 0x28]
xor ecx, ecx
nop word [eax + eax]
cmp dword [ebx + ecx*4 + 0x1e8], esi
je 0x4a0ec6
inc ecx
cmp edx, ecx
jne 0x4a0ea0
xor edx, edx
xor esi, esi
jmp 0x4a0ee5
xor edx, edx
xor esi, esi
jmp 0x4a0ee9
xor esi, esi
mov edx, 1
shld esi, edx, cl
mov edx, 1
shl edx, cl
test cl, 0x20
mov ecx, 0
cmovne esi, edx
cmovne edx, ecx
mov ecx, dword [esp + 0x34]
mov dword [ecx + 0xc], esi
mov dword [ecx + 8], edx
mov ecx, dword [esp + 0x14]
mov esi, dword [esp + 0x3c]
mov dl, byte [ecx + 0x24]
mov ebx, dword [ecx + 0x10]
or al, dl
mov byte [esp + 0x2f], dl
mov edx, dword [esp + 0x38]
test al, 0xa
cmovne esi, dword [esp + 0x28]
cmovne edx, dword [esp + 0x20]
cmp dword [ebx + 0x38], 0
mov dword [esp + 0x3c], esi
mov dword [esp + 0x38], edx
je 0x4a0ff0
add ecx, 0x48
xor esi, esi
mov ebx, 0
cmp ecx, dword [esp + 0xc]
jae 0x4a0fd0
mov eax, dword [esp + 0x14]
xor edx, edx
xor edi, edi
jmp 0x4a0f69
xor esi, esi
xor ebx, ebx
or esi, edx
or ebx, edi
mov eax, dword [esp + 8]
mov edx, esi
mov edi, ebx
lea ecx, [eax + 0x48]
cmp ecx, dword [esp + 0xc]
jae 0x4a0fd0
mov esi, edx
mov dword [esp + 8], ecx
or esi, edi
jne 0x4a0f79
test byte [eax + 0x6c], 0xa
je 0x4a0fc1
mov ebx, dword [esp + 0x24]
mov esi, dword [ebx + 0x1e4]
test esi, esi
jle 0x4a0f50
mov eax, dword [eax + 0x70]
xor ecx, ecx
nop dword [eax]
cmp dword [ebx + ecx*4 + 0x1e8], eax
je 0x4a0fa0
inc ecx
cmp esi, ecx
jne 0x4a0f90
jmp 0x4a0f50
mov esi, 1
xor ebx, ebx
mov eax, 1
shld ebx, eax, cl
shl esi, cl
test cl, 0x20
mov eax, 0
cmovne ebx, esi
cmovne esi, eax
jmp 0x4a0f54
xor esi, esi
xor ebx, ebx
jmp 0x4a0f58
mov edx, dword [esp + 0x38]
lea ecx, [esp + 0x60]
push ebx
push esi
push dword [esp + 0x44]
call fcn.004b0b10
add esp, 0xc
mov edi, dword [esp + 0x30]
jmp 0x4a1001
lea ecx, [esp + 0x60]
push esi
call fcn.004b1280
add esp, 4
xor esi, esi
xor ebx, ebx
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x58]
test eax, eax
jne 0x4a1035
mov eax, dword [esp + 0x64]
cmp byte [eax + 9], 0
je 0x4a1070
mov edx, dword [esp + 0x38]
lea ecx, [esp + 0x60]
push ebx
push esi
push dword [esp + 0x44]
call fcn.004b1cb0
mov edx, dword [esp + 0x64]
mov ecx, dword [esp + 0x40]
add esp, 0xc
mov esi, eax
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x18]
or eax, dword [ecx + 8]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x28]
or eax, dword [ecx + 0xc]
cmp esi, 0x65
mov dword [esp + 0x28], eax
mov eax, esi
mov esi, dword [esp + 0x5c]
je 0x4a0e40
test eax, eax
jne 0x4a109a
cmp byte [esi + 0x51], 0
je 0x4a0e57
jmp 0x4a1098
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x18]
or esi, dword [ecx + 0xc]
or eax, dword [ecx + 8]
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0x5c]
mov dword [esp + 0x20], eax
cmp byte [esi + 0x51], 0
je 0x4a0e57
xor eax, eax
mov edx, dword [ecx + 0x30]
mov dword [esp + 8], eax
cmp edx, dword [esp + 0xe4]
je 0x4a10c3
mov ecx, esi
call fcn.004352c0
mov ecx, dword [esp + 0x34]
jmp 0x4a10c3
mov edi, dword [esp + 0x30]
mov dword [esp + 8], 0
mov eax, dword [ecx + 0x24]
test eax, 0x4400
je 0x4a1197
test eax, 0x400
je 0x4a113f
cmp byte [ecx + 0x1c], 0
je 0x4a113f
mov esi, dword [ecx + 0x20]
test esi, esi
je 0x4a118c
cmp dword [0x51d1a8], 0
je 0x4a117e
mov eax, dword [0x51e858]
test eax, eax
je 0x4a1109
push eax
call dword [0x51d1f8]
add esp, 4
push esi
call dword [0x51d1d4]
add esp, 4
sub dword [0x51e800], eax
dec dword [0x51e824]
push esi
call dword [0x51d1cc]
add esp, 4
mov eax, dword [0x51e858]
mov ecx, dword [esp + 0x34]
test eax, eax
je 0x4a118c
push eax
call dword [0x51d200]
jmp 0x4a1185
test eax, 0x4000
je 0x4a1197
mov edx, dword [ecx + 0x20]
test edx, edx
je 0x4a1197
mov eax, dword [edx + 0x10]
mov esi, ecx
test eax, eax
je 0x4a116a
mov ecx, dword [esp + 0x5c]
mov edx, eax
call fcn.004352c0
mov ecx, dword [esp + 0x5c]
mov edx, dword [esi + 0x20]
jmp 0x4a116e
mov ecx, dword [esp + 0x5c]
call fcn.004352c0
mov ecx, esi
mov dword [esi + 0x20], 0
jmp 0x4a1197
push esi
call dword [0x51d1cc]
mov ecx, dword [esp + 0x38]
add esp, 4
mov byte [ecx + 0x1c], 0
mov dword [ecx + 0x20], 0
mov eax, dword [esp + 0xe4]
cmp dword [esp + 8], 0
mov dword [ecx + 0x30], eax
mov word [ecx + 0x28], 0
mov word [ecx + 0x2c], 3
mov dword [ecx + 0x24], 0
jne 0x4a11cc
mov ecx, dword [esp + 0x10]
xor edx, edx
call fcn.004a8b30
cmp byte [edi + 0x51], 0
je 0x4a11f4
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4a11ea
mov edx, eax
mov eax, dword [eax + 0x24]
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 0x84], eax
mov ecx, edi
call fcn.004ad6d0
xor eax, eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [esp + 0x10]
cmp dword [eax + 8], 0
je 0x4a1223
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
movzx eax, word [eax + 0x32]
inc eax
movsx edx, ax
call fcn.004a8b30
mov eax, dword [esp + 0x10]
cmp byte [edi + 0x51], 0
jne 0x4a11d4
cmp dword [eax + 8], 0
jne 0x4a1237
test byte [edi + 0x21], 0x10
je 0x4a1237
mov dword [eax + 0x44], 0xffffffff
mov dword [eax + 0x40], 0xffffffff
mov eax, dword [esp + 0x1c]
cmp dword [eax + 0x24], 0
mov eax, dword [esp + 0x10]
jne 0x4a11d4
cmp byte [edi + 0x51], 0
jne 0x4a11d4
cmp dword [ebp + 0x10], 0
mov dword [esp + 0x28], 0xffffffff
je 0x4a167c
cmp byte [eax + 0x2c], 2
jb 0x4a167c
test byte [edi + 0x4d], 1
mov dword [esp + 0x28], 0xffffffff
jne 0x4a167c
mov edx, dword [ebp + 0x10]
mov esi, eax
add esi, 0x1e0
mov ecx, esi
call fcn.004a95d0
mov ecx, edx
mov edx, dword [esp + 0x68]
test edx, edx
je 0x4a14d3
mov dword [esp + 0x3c], ecx
mov ecx, esi
mov esi, eax
call fcn.004a95d0
mov ecx, dword [esp + 0x3c]
or esi, eax
or ecx, edx
mov edx, esi
jmp 0x4a14d5
xor edi, edi
movzx eax, word [esi + 0x32]
mov ebx, dword [esp + 0x18]
cmp edi, eax
je 0x4a1489
mov esi, dword [esi + 0x14]
test esi, esi
je 0x4a0d46
cmp byte [esi + 0x36], 0
je 0x4a12c7
cmp dword [esi + 0x24], 0
jne 0x4a12c7
movzx eax, word [esi + 0x32]
cmp ax, 3
ja 0x4a12c7
test ax, ax
je 0x4a12b5
mov al, byte [esi + 0x37]
xor edi, edi
and al, 8
shr al, 3
movzx ebx, al
shl ebx, 7
or ebx, 2
jmp 0x4a1323
test edi, edi
je 0x4a1480
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
mov eax, dword [eax + 0x30]
mov dword [eax + ecx*4], edi
mov edi, ecx
movzx eax, word [esi + 0x32]
inc edi
cmp edi, eax
jae 0x4a12b7
mov eax, dword [esp + 0x14]
pcmpeqd xmm0, xmm0
movdqa xmmword [esp + 0x80], xmm0
movdqa xmmword [esp + 0x90], xmm0
movdqa xmmword [esp + 0xd0], xmm0
movdqa xmmword [esp + 0xc0], xmm0
movdqa xmmword [esp + 0xb0], xmm0
movdqa xmmword [esp + 0xa0], xmm0
mov dword [esp + 0x80], eax
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x8c], 0
mov byte [esp + 0x90], 0
mov dword [esp + 0x88], 0
mov dword [esp + 0x94], ebx
mov dword [esp + 0x98], 0
mov dword [esp + 0x9c], eax
mov word [esp + 0x91], 0x101
mov eax, dword [esi + 4]
movsx eax, word [eax + edi*2]
cmp eax, 0xfffffffe
jne 0x4a13f8
mov eax, dword [esi + 0x28]
mov ecx, edi
shl ecx, 4
mov eax, dword [eax + ecx + 4]
lea ecx, [esp + 0x80]
mov dword [esp + 0x8c], eax
mov eax, dword [esi + 0x20]
mov eax, dword [eax + edi*4]
mov dword [esp + 0x88], eax
mov word [esp + 0xc8], 0xfffe
call fcn.004b0a70
jmp 0x4a143e
mov edx, dword [esi + 0xc]
mov cx, 0xffff
cmp ax, word [edx + 0x28]
je 0x4a142a
test ax, ax
js 0x4a1428
mov ecx, dword [edx + 4]
lea edx, [eax + eax*4]
mov cl, byte [ecx + edx*4 + 0xd]
mov byte [esp + 0x90], cl
mov ecx, dword [esi + 0x20]
mov ecx, dword [ecx + edi*4]
mov dword [esp + 0x88], ecx
mov ecx, eax
mov word [esp + 0xc8], cx
lea ecx, [esp + 0x80]
call fcn.004b0720
test eax, eax
je 0x4a12b7
mov dword [esp + 8], edi
xor edi, edi
jmp 0x4a1469
test edi, edi
lea ecx, [esp + 0x80]
cmove edi, eax
call fcn.004b0720
test eax, eax
je 0x4a1302
mov ecx, dword [eax + 0x20]
or ecx, dword [eax + 0x24]
jne 0x4a1450
movzx ecx, word [eax + 0xc]
test ebx, ecx
je 0x4a1450
mov edi, eax
jmp 0x4a130a
mov edi, dword [esp + 8]
jmp 0x4a12b7
mov edx, dword [esp + 0xc]
mov dword [esp + 8], edi
mov dword [edx + 0x24], 0x1201
test byte [esi + 0x37], 0x20
jne 0x4a14b2
mov eax, dword [esi + 0x40]
mov edi, dword [esp + 0x28]
mov ecx, dword [esi + 0x44]
and ecx, dword [edi + 0x44]
and eax, dword [edi + 0x40]
or eax, ecx
jne 0x4a14b9
mov dword [edx + 0x24], 0x1241
mov eax, dword [esp + 8]
mov word [edx + 0x28], ax
mov word [edx + 0x18], ax
mov dword [edx + 0x20], esi
mov word [edx + 0x14], 0x27
jmp 0x4a0d46
mov edx, eax
mov eax, dword [esp + 0x10]
mov esi, ecx
mov dword [esp + 0x28], 0xffffffff
movzx eax, byte [eax + 0x2c]
cmp eax, 2
jb 0x4a167c
mov dword [esp + 0x28], 0xffffffff
mov ecx, eax
mov byte [esp + 0x2f], al
mov dword [esp + 0x38], 0xffffffff
mov dword [esp + 0x34], edx
mov dword [esp + 0x3c], esi
jmp 0x4a1541
mov dword [esp + 0x58], ecx
mov ecx, dword [edx + 8]
mov eax, dword [edx + 0xc]
mov dword [esp + 0x14], eax
mov dword [esp + 0x24], ecx
and eax, dword [esp + 0x3c]
and ecx, dword [esp + 0x34]
or ecx, eax
je 0x4a157c
mov edi, dword [esp + 0x30]
mov eax, dword [esp + 0xc]
cmp dword [esp + 8], 2
jle 0x4a1684
mov dword [esp + 8], eax
dec eax
mov edi, dword [esp + 0x10]
mov dword [esp + 0xc], eax
imul ecx, eax, 0x58
mov eax, dword [esp + 0x50]
mov edi, dword [edi + 4]
mov edx, dword [eax + ecx + 0x48]
movzx eax, byte [edx + 0x10]
lea esi, [eax + eax*8]
test byte [edi + esi*8 + 0x2c], 8
je 0x4a152e
test dword [esp + 0x4c], 0x100
jne 0x4a1510
test byte [edx + 0x25], 0x10
jne 0x4a1510
jmp 0x4a152e
mov eax, dword [esp + 0x64]
mov ecx, dword [eax + 0xc]
test ecx, ecx
jle 0x4a15d8
mov eax, dword [eax + 0x14]
lea ecx, [ecx + ecx*2]
lea esi, [edi + esi*8 + 0x30]
shl ecx, 4
mov dword [esp + 0x20], esi
add ecx, eax
mov edi, eax
jmp 0x4a15a5
add edi, 0x30
cmp edi, ecx
jae 0x4a15de
mov esi, dword [edi + 0x28]
mov ebx, dword [edi + 0x2c]
and esi, dword [esp + 0x24]
and ebx, dword [esp + 0x14]
or ebx, esi
je 0x4a159e
mov esi, dword [edi]
test byte [esi + 4], 1
je 0x4a15cb
movsx esi, word [esi + 0x24]
mov ebx, dword [esp + 0x20]
cmp dword [ebx], esi
je 0x4a159e
mov edi, dword [esp + 0x30]
mov ebx, dword [esp + 0x18]
jmp 0x4a1532
mov cl, byte [esp + 0x2f]
jmp 0x4a1611
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
add eax, 0x30
and esi, dword [eax - 8]
and edi, dword [eax - 4]
or edi, esi
je 0x4a15fb
or byte [eax - 0x26], 4
cmp eax, ecx
jae 0x4a160a
mov esi, dword [edx + 8]
mov edi, dword [edx + 0xc]
add eax, 0x30
jmp 0x4a15ed
mov eax, dword [esp + 0x10]
mov cl, byte [eax + 0x2c]
mov edx, dword [esp + 0x14]
movzx eax, cl
mov edi, dword [esp + 0x30]
not dword [esp + 0x24]
cmp dword [esp + 8], eax
not edx
je 0x4a165a
mov ecx, dword [esp + 8]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x58]
sub eax, ecx
imul ecx, ecx, 0x58
add edx, dword [esp + 0x50]
add ecx, dword [esp + 0x50]
imul eax, eax, 0x58
push eax
push ecx
push edx
call sub.api_ms_win_crt_private_l1_1_0.dll_memmove
mov edx, dword [esp + 0x20]
add esp, 0xc
mov eax, dword [esp + 0x10]
mov cl, byte [eax + 0x2c]
mov eax, dword [esp + 0x24]
and dword [esp + 0x38], edx
mov edx, dword [esp + 0x10]
dec dword [esp + 0x54]
dec cl
mov byte [esp + 0x2f], cl
and dword [esp + 0x28], eax
mov byte [edx + 0x2c], cl
jmp 0x4a1532
mov dword [esp + 0x38], 0xffffffff
mov esi, dword [esp + 0x10]
movsx eax, word [esi + 0x32]
mov ecx, dword [esi]
add dword [ecx + 0x84], eax
test byte [esp + 0x4c], 4
jne 0x4a1bbf
mov edx, dword [esp + 0x44]
mov dword [esp + 0x34], 0
cmp dword [esp + 0x54], 0
jle 0x4a1c0f
test edx, edx
sete al
cmp dword [ebp + 0x18], 0
sete cl
or cl, al
xor eax, eax
mov byte [esp + 0x58], cl
mov ecx, dword [esp + 0x50]
jmp 0x4a16ea
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x44]
inc eax
add ecx, 0x58
cmp eax, dword [esp + 0x54]
je 0x4a1ae1
mov dword [esp + 0x24], eax
movzx eax, byte [ecx + 0x34]
mov dword [esp + 8], ecx
lea ecx, [eax + eax*8]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x14], ecx
mov esi, dword [eax + ecx*8 + 0x18]
mov eax, dword [esi + 0x48]
test eax, eax
je 0x4a172a
mov ecx, dword [edi + 0x10]
mov ebx, 0xffffffff
add ecx, 0xc
nop word [eax + eax]
inc ebx
cmp dword [ecx], eax
lea ecx, [ecx + 0x10]
jne 0x4a1720
jmp 0x4a172f
mov ebx, 0xfff0bdc0
mov eax, dword [esp + 8]
test byte [esi + 0x24], 2
mov ecx, ebx
mov dword [esp + 0xc], ecx
mov eax, dword [eax + 0x48]
mov ebx, eax
mov eax, ecx
jne 0x4a17f9
cmp dword [esi + 0xc], 0
jne 0x4a17f9
mov eax, dword [ebx + 0x24]
test eax, 0x400
jne 0x4a1794
cmp dword [esi + 0x38], 0
jne 0x4a17f9
and eax, 0x40
or eax, edx
je 0x4a19fb
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0xc]
push dword [esi]
push 0
push dword [esi + 0x1c]
call fcn.004863b0
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x50]
add esp, 0xc
jmp 0x4a17f9
mov eax, dword [esi + 0x40]
test eax, eax
je 0x4a17aa
mov ecx, dword [esp + 0x30]
cmp dword [eax], ecx
je 0x4a17b4
mov eax, dword [eax + 0x18]
test eax, eax
jne 0x4a179b
mov dword [esp + 0x3c], 0
jmp 0x4a17b8
mov dword [esp + 0x3c], eax
mov ecx, dword [esp + 0x40]
mov edx, 0xa5
push 0
push 0
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x1c]
push dword [eax + edi*8 + 0x30]
call fcn.0046c5a0
add esp, 0xc
mov ecx, dword [esp + 0x40]
mov edx, eax
push 0xfffffffffffffff4
push dword [esp + 0x40]
call fcn.0042b420
add esp, 8
mov edi, dword [esp + 0x30]
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0xc]
test byte [ebx + 0x25], 2
jne 0x4a1848
test ecx, ecx
js 0x4a16d0
mov ecx, dword [esp + 0x1c]
mov esi, 1
mov eax, dword [ecx + 0x74]
test eax, eax
cmove eax, ecx
mov ecx, dword [esp + 0xc]
shl esi, cl
mov ecx, dword [esp + 0xc]
mov edx, dword [eax + 0x54]
bt edx, ecx
jb 0x4a16d0
or edx, esi
cmp ecx, 1
mov dword [eax + 0x54], edx
jne 0x4a16d0
mov ecx, eax
call fcn.00439a80
jmp 0x4a16d0
mov edi, dword [ebx + 0x20]
cmp byte [esi + 0x24], 0
js 0x4a189f
mov eax, dword [esp + 0x10]
mov dword [esp + 0x20], ebx
cmp byte [eax + 0x2e], 0
je 0x4a18c7
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
mov esi, dword [esp + 0x1c]
lea eax, [eax + ecx*8 + 0x18]
mov eax, dword [eax]
mov ecx, dword [eax + 8]
mov eax, dword [ebp + 0x18]
test ecx, ecx
je 0x4a1891
mov eax, dword [ebp + 0x18]
cmp ecx, edi
je 0x4a1891
mov eax, dword [ebp + 0x18]
mov ecx, dword [ecx + 0x14]
inc eax
test ecx, ecx
je 0x4a1891
cmp ecx, edi
jne 0x4a1885
mov ecx, dword [esp + 0x10]
mov edx, 0x61
mov dword [ecx + 0x18], eax
jmp 0x4a18e8
test edx, edx
je 0x4a1851
movzx eax, word [edi + 0x37]
and eax, 3
cmp ax, 2
jne 0x4a1851
mov ecx, dword [esp + 8]
mov edi, dword [esp + 0x30]
mov eax, dword [ecx + 4]
mov dword [ecx + 8], eax
mov ecx, dword [esp + 0xc]
jmp 0x4a17ff
cmp byte [esp + 0x58], 0
mov eax, dword [ebp + 0x18]
mov esi, dword [esp + 0x1c]
mov edx, 0x5f
je 0x4a18e8
mov eax, dword [esi + 0x28]
mov edx, 0x60
lea ecx, [eax + 1]
mov dword [esi + 0x28], ecx
mov ecx, dword [esp + 8]
mov dword [ecx + 8], eax
mov ecx, dword [edi + 0x2c]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x40]
mov ebx, dword [ecx + 0x6c]
cmp dword [ecx + 0x70], ebx
jle 0x4a193f
lea esi, [ebx + 1]
mov dword [ecx + 0x6c], esi
mov esi, dword [ecx + 0x68]
lea ecx, [ebx + ebx*4]
mov ebx, dword [esp + 0x14]
mov byte [esi + ecx*4], dl
mov edx, dword [esp + 0xc]
mov word [esi + ecx*4 + 2], 0
mov dword [esi + ecx*4 + 4], eax
mov dword [esi + ecx*4 + 8], ebx
mov dword [esi + ecx*4 + 0xc], edx
mov dword [esi + ecx*4 + 0x10], 0
mov byte [esi + ecx*4 + 1], 0
mov esi, dword [esp + 0x1c]
jmp 0x4a1950
push dword [esp + 0xc]
push dword [esp + 0x18]
push eax
call fcn.0046c600
add esp, 0xc
mov ecx, esi
mov ebx, dword [esp + 0x20]
mov esi, dword [esi + 8]
mov edx, edi
call fcn.00486590
mov edi, dword [esp + 0x30]
test eax, eax
je 0x4a199b
mov ecx, dword [esi]
cmp byte [ecx + 0x51], 0
je 0x4a1989
cmp dword [ecx + 0x1f8], 0
jne 0x4a199b
dec dword [eax]
jne 0x4a199b
mov ecx, dword [eax + 0xc]
mov edx, eax
call fcn.004352c0
jmp 0x4a199b
mov edx, dword [esi + 0x6c]
mov ecx, dword [esi + 0x68]
lea edx, [edx + edx*4]
mov byte [ecx + edx*4 - 0x13], 0xf7
mov dword [ecx + edx*4 - 4], eax
mov eax, dword [ebx + 0x24]
mov ecx, dword [esp + 0xc]
test eax, 0x88002
jne 0x4a17ff
and eax, 0xf
je 0x4a17ff
mov eax, dword [esp + 0x10]
test byte [eax + 0x28], 1
jne 0x4a17ff
mov eax, dword [esp + 0x10]
cmp byte [eax + 0x2f], 2
je 0x4a17ff
mov eax, dword [esp + 0x40]
mov eax, dword [eax + 0x6c]
test eax, eax
jle 0x4a17ff
mov ecx, dword [esp + 0x40]
lea eax, [eax + eax*4]
mov ecx, dword [ecx + 0x68]
mov word [ecx + eax*4 - 0x12], 2
mov ecx, dword [esp + 0xc]
jmp 0x4a17ff
mov dword [esp + 0x20], ebx
mov ebx, dword [esp + 0x10]
cmp byte [ebx + 0x2e], 0
je 0x4a1a1f
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
mov eax, dword [ecx + edx*8 + 0x30]
mov dword [ebx + 0x14], eax
mov eax, 0x61
jmp 0x4a1a2c
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
mov eax, 0x60
mov edx, dword [ecx + edx*8 + 0x30]
mov ecx, dword [esp + 0x1c]
push eax
push esi
push dword [esp + 0x14]
call fcn.00486200
add esp, 0xc
cmp byte [ebx + 0x2e], 0
jne 0x4a1aa2
cmp word [esi + 0x2a], 0x3f
jg 0x4a1aa2
test byte [esi + 0x24], 0xe0
jne 0x4a1aa2
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
mov ebx, dword [eax + ecx*8 + 0x40]
mov ecx, dword [eax + ecx*8 + 0x44]
mov eax, 0x40
bsr edi, ebx
bsr edx, ecx
xor edi, 0x1f
xor edx, 0x1f
add edi, 0x20
test ecx, ecx
cmovne edi, edx
mov edx, 0xffffffff
sub eax, edi
or ebx, ecx
mov ecx, 0
mov edi, dword [esp + 0x30]
cmove eax, ecx
mov ecx, dword [esp + 0x40]
push 0xfffffffffffffffd
push eax
call fcn.0042b420
add esp, 8
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0xc]
mov ebx, dword [esp + 0x20]
mov eax, dword [eax + 0x6c]
test eax, eax
jle 0x4a17f9
mov ecx, dword [esp + 0x40]
lea eax, [eax + eax*4]
mov ecx, dword [ecx + 0x68]
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x34]
mov ebx, dword [esp + 0x3c]
mov word [ebx + eax*4 - 0x12], cx
mov ebx, dword [esp + 0x20]
jmp 0x4a17f5
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x10]
mov eax, dword [eax + 0x6c]
mov dword [ecx + 0x34], eax
mov eax, ecx
cmp byte [edi + 0x51], 0
jne 0x4a11d4
mov esi, dword [esp + 0x50]
mov dword [esp + 8], 0
jmp 0x4a1b72
mov ebx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov ecx, ebx
push dword [esp + 0x4c]
mov esi, dword [esp + 0x54]
push esi
call fcn.004aa4a0
add esp, 8
mov edx, dword [esp + 0x40]
mov ecx, ebx
mov eax, dword [edx + 0x6c]
mov dword [esi + 0x20], eax
push dword [esp + 0x38]
push dword [esp + 0x2c]
push esi
mov ebx, dword [esp + 0x14]
push ebx
push dword [esp + 0x20]
call fcn.004aaa20
add esp, 0x14
mov dword [esp + 0x28], eax
mov eax, dword [esi + 0x18]
mov ecx, dword [esp + 0x10]
inc ebx
add esi, 0x58
mov dword [esp + 0x38], edx
cmp dword [esp + 0x54], ebx
mov dword [esp + 8], ebx
mov dword [ecx + 0x1c], eax
mov eax, dword [esp + 0x10]
je 0x4a11ec
mov eax, dword [esi + 0x48]
mov dword [esp + 0x50], esi
test byte [eax + 0x25], 0x40
je 0x4a1b09
mov esi, dword [esp + 0x50]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x48]
movzx eax, byte [esi + 0x34]
lea eax, [eax + eax*8]
lea eax, [ecx + eax*8 + 8]
mov ecx, dword [esp + 0x1c]
push esi
push dword [esp + 0x3c]
push dword [esp + 0x30]
push eax
call fcn.004a9640
mov eax, dword [esp + 0x20]
add esp, 0x10
cmp byte [edi + 0x51], 0
je 0x4a1b09
jmp 0x4a11d4
mov eax, dword [esi + 0x330]
mov dl, 1
mov ecx, dword [eax + 0x24]
test ecx, 0x1000
jne 0x4a1c3a
test byte [esp + 0x4c], 8
je 0x4a169f
mov edx, dword [ebx + 0x18]
cmp dword [edx + 0x38], 0
jne 0x4a169f
test byte [esp + 0x4c], 0x10
mov dl, 2
jne 0x4a1c2e
mov ebx, ecx
mov edi, dword [esp + 0x30]
mov esi, dword [esp + 0x10]
and ebx, 0x2000
mov ebx, dword [esp + 0x18]
jne 0x4a169f
jmp 0x4a1c3a
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x10]
mov eax, dword [eax + 0x6c]
mov dword [ecx + 0x34], eax
mov eax, ecx
cmp byte [edi + 0x51], 0
jne 0x4a11d4
jmp 0x4a11ec
mov edi, dword [esp + 0x30]
mov ebx, dword [esp + 0x18]
mov esi, dword [esp + 0x10]
test cl, 0x40
mov byte [esi + 0x2e], dl
mov dword [esp + 0x34], 0
je 0x4a1c74
mov edx, dword [ebx + 0x18]
mov esi, dword [esp + 0xe8]
cmp byte [edx + 0x24], 0
mov edx, dword [esp + 0x44]
js 0x4a16ab
and ecx, 0xffffffbf
and esi, 8
mov dword [esp + 0x34], esi
mov dword [eax + 0x24], ecx
jmp 0x4a16ab
mov edx, dword [esp + 0x44]
jmp 0x4a16ab