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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x98
mov esi, ecx
movzx ecx, byte [ecx + 0x30]
xor eax, eax
mov dword [esp + 0x10], ecx
cmp ecx, 2
setne al
lea eax, [eax + eax*4 + 5]
mov ecx, 1
cmovae ecx, eax
mov dword [esp + 0x48], ecx
mov eax, dword [esi]
mov dword [esp + 0x58], eax
mov ecx, dword [eax]
mov dword [esp + 0x50], edx
test dx, dx
je 0x4b4119
mov dword [esp + 0x40], 0
mov eax, dword [esi + 8]
test eax, eax
je 0x4b4121
mov eax, dword [eax]
mov dword [esp + 0x40], eax
jmp 0x4b4121
mov dword [esp + 0x40], 0
mov eax, dword [esp + 0x10]
lea edx, [eax*4 + 0x20]
mov edi, dword [esp + 0x48]
imul edx, edi
mov ebx, dword [esp + 0x40]
add edx, ebx
add edx, edx
mov eax, edx
sar eax, 0x1f
mov dword [esp + 0x5c], ecx
push eax
call fcn.0043f5f0
add esp, 4
test eax, eax
je 0x4b4ce7
mov dword [esp + 8], esi
mov ecx, eax
lea eax, [ebx + ebx]
mov esi, edi
shl esi, 5
lea edx, [ecx + esi]
xorps xmm0, xmm0
movups xmmword [ecx + esi + 0x10], xmm0
movups xmmword [ecx + esi], xmm0
mov dword [esp + 0x14], edx
lea ebx, [edx + esi]
mov dword [esp + 0x4c], ecx
add ecx, 0x18
lea edx, [edi + edi]
inc edx
mov edi, dword [esp + 0x10]
nop dword [eax + eax]
mov dword [ecx], ebx
lea ebx, [ebx + edi*4]
add ecx, 0x20
dec edx
cmp edx, 1
ja 0x4b4190
mov dword [esp + 0x54], ebx
mov ebx, dword [esp + 0x40]
test ebx, ebx
je 0x4b41e6
push eax
push 0
push dword [esp + 0x5c]
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
mov eax, dword [esp + 0x58]
mov ecx, dword [eax + 0x88]
cmp ecx, 0x30
mov eax, 0x30
cmovb eax, ecx
xor ecx, ecx
mov edi, dword [esp + 0x10]
mov edx, edi
neg edx
sbb ecx, ecx
or cl, bl
mov edx, dword [esp + 0x4c]
mov byte [edx + esi + 0x16], cl
jmp 0x4b420b
mov eax, dword [esp + 0x58]
mov ecx, dword [eax + 0x88]
cmp ecx, 0x30
mov eax, 0x30
cmovb eax, ecx
mov dword [esp + 0x54], 0
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0x4c]
mov word [edx + esi + 0x10], ax
test edi, edi
je 0x4b4a85
mov eax, edx
mov ecx, dword [esp + 0x50]
lea edx, [ecx - 0xa]
mov dword [esp + 0x70], edx
add ecx, 0x10
mov dword [esp + 0x7c], ecx
mov ecx, dword [esp + 0x48]
cmp ecx, 3
mov edx, 2
cmovae edx, ecx
dec edx
mov dword [esp + 0x74], edx
and edx, 0xfffffffe
neg edx
mov dword [esp + 0x90], edx
mov dword [esp + 0x28], 0
mov edx, 1
mov dword [esp + 0x3c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x44], 0
mov esi, dword [esp + 8]
jmp 0x4b42af
mov dword [esp + 0x1c], 0
mov edi, dword [esp + 0x44]
inc edi
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x14], ecx
mov ebx, dword [esp + 0x1c]
mov edx, ebx
mov ecx, edi
mov dword [esp + 0x44], edi
cmp edi, dword [esp + 0x10]
je 0x4b49d4
test edx, edx
mov dword [esp + 0x38], eax
jle 0x4b4280
mov ecx, dword [esp + 0x44]
lea ecx, [ecx*4]
mov dword [esp + 0x84], ecx
add eax, 0x32
mov dword [esp + 0x78], eax
mov dword [esp + 0x1c], 0
mov dword [esp + 0x88], edx
mov edi, dword [esp + 0x14]
mov dword [esp + 0x64], 0
jmp 0x4b430d
mov eax, dword [esp + 0x64]
inc eax
add edi, 0x20
mov dword [esp + 0x64], eax
cmp eax, dword [esp + 0x88]
mov esi, dword [esp + 8]
je 0x4b4288
mov esi, dword [esi + 0x40]
test esi, esi
je 0x4b42f0
mov dword [esp + 4], edi
nop dword [eax + eax]
movzx edx, byte [edi + 0x16]
mov dword [esp + 0x34], 0
mov dword [esp + 0x30], 0
mov ebx, dword [edi + 4]
mov edi, dword [edi]
mov eax, edi
mov ecx, ebx
not ecx
and ecx, dword [esi + 4]
not eax
and eax, dword [esi]
or eax, ecx
jne 0x4b4362
mov byte [esp + 3], dl
mov ecx, dword [esi + 8]
mov edx, dword [esi + 0xc]
mov eax, edx
and eax, ebx
mov dword [esp + 0x6c], ecx
and ecx, edi
or ecx, eax
je 0x4b436f
mov edi, dword [esp + 4]
mov esi, dword [esi + 0x38]
test esi, esi
jne 0x4b4320
jmp 0x4b42f0
mov dword [esp + 0x2c], edx
mov dword [esp + 0x68], edi
mov dword [esp + 0x8c], ebx
mov ebx, esi
test byte [esi + 0x29], 0x40
mov edi, dword [esp + 4]
movzx eax, word [edi + 0x10]
je 0x4b4398
cmp ax, 3
jge 0x4b4398
mov esi, ebx
jmp 0x4b4366
mov ecx, ebx
movzx edi, word [ebx + 0x12]
movzx edx, word [ebx + 0x14]
mov word [esp + 0x26], ax
add dx, ax
movsx eax, di
movsx ecx, dx
cmp ax, cx
jge 0x4b43c0
lea edi, [eax + 0x31]
cmp edi, ecx
jge 0x4b43d1
mov edi, edx
jmp 0x4b43fd
lea edx, [ecx + 0x31]
cmp edx, eax
jl 0x4b43fd
lea edx, [ecx + 0x1f]
cmp edx, eax
jge 0x4b43dd
inc edi
jmp 0x4b43fd
lea edi, [eax + 0x1f]
cmp edi, ecx
jge 0x4b43ee
inc edx
mov edi, edx
jmp 0x4b43fd
mov edx, eax
sub edx, ecx
movzx ecx, byte [edx + str._n_n_t_t_b_b_a_a_a]
add eax, ecx
mov edi, eax
jmp 0x4b43fd
mov edx, ecx
sub edx, eax
movzx eax, byte [edx + str._n_n_t_t_b_b_a_a_a]
add ecx, eax
mov edi, ecx
mov eax, dword [esp + 4]
movzx edx, word [eax + 0x14]
movsx eax, di
movsx ecx, dx
cmp ax, cx
jge 0x4b441b
lea edi, [eax + 0x31]
cmp edi, ecx
jge 0x4b442c
mov edi, edx
jmp 0x4b4458
lea edx, [ecx + 0x31]
cmp edx, eax
jl 0x4b4458
lea edx, [ecx + 0x1f]
cmp edx, eax
jge 0x4b4438
inc edi
jmp 0x4b4458
lea edi, [eax + 0x1f]
cmp edi, ecx
jge 0x4b4449
inc edx
mov edi, edx
jmp 0x4b4458
mov edx, eax
sub edx, ecx
movzx ecx, byte [edx + str._n_n_t_t_b_b_a_a_a]
add eax, ecx
mov edi, eax
jmp 0x4b4458
mov edx, ecx
sub edx, eax
movzx eax, byte [edx + str._n_n_t_t_b_b_a_a_a]
add ecx, eax
mov edi, ecx
movzx eax, byte [esp + 3]
movzx edx, word [esp + 0x26]
mov esi, ebx
add dx, word [ebx + 0x16]
mov word [esp + 0x26], dx
test al, al
js 0x4b4482
mov edx, dword [esp + 4]
movsd xmm0, qword [edx + 8]
movsd qword [esp + 0x30], xmm0
jmp 0x4b44ae
mov ecx, dword [esp + 8]
mov edx, dword [ecx + 8]
movzx eax, word [ecx + 0x2c]
mov dword [esp + 0x20], edi
movzx edi, word [esp + 0x44]
lea ebx, [esp + 0x30]
push ebx
push esi
push edi
mov edi, dword [esp + 0x2c]
push eax
push dword [esp + 0x14]
call fcn.004c2560
add esp, 0x14
test al, al
mov byte [esp + 3], al
js 0x4b4519
movsx ebx, al
mov ecx, dword [esp + 0x40]
sub ecx, ebx
jle 0x4b4519
mov edx, dword [esp + 0x54]
movzx edx, word [edx + ebx*2]
test dx, dx
mov dword [esp + 0x20], edi
jne 0x4b46c2
imul eax, ecx, 0x64
cdq
idiv dword [esp + 0x40]
cmp eax, 8
mov dword [esp + 0x60], ebx
jae 0x4b452b
mov dx, 0xffbe
cmp eax, 2
jb 0x4b45bd
mov ecx, eax
sar ecx, 0x1f
mov dx, 0x28
mov edi, ecx
nop
add edx, 0xfffffff6
shld edi, eax, 1
cmp eax, 4
lea eax, [eax + eax]
sbb ecx, 0
mov ecx, edi
jb 0x4b4500
jmp 0x4b45a7
mov eax, edi
mov dword [esp + 0xc], eax
lea eax, [edi - 2]
mov dword [esp + 0x20], eax
jmp 0x4b472a
cmp eax, 0x100
jb 0x4b4568
mov ebx, eax
sar ebx, 0x1f
mov dx, 0x28
mov edi, eax
mov ecx, ebx
nop
mov dword [esp + 0xc], ebx
mov eax, ebx
shld eax, edi, 0x1c
add edx, 0x28
shr ecx, 4
mov ebx, 0xfff
cmp ebx, edi
mov edi, 0
sbb edi, dword [esp + 0xc]
mov edi, eax
mov ebx, ecx
jb 0x4b4540
jmp 0x4b4571
mov ecx, eax
sar ecx, 0x1f
mov dx, 0x28
cmp eax, 0x10
mov edi, ecx
sbb edi, 0
jb 0x4b45a7
nop dword [eax + eax]
mov edi, eax
mov dword [esp + 0xc], eax
mov eax, ecx
shld eax, edi, 0x1f
add edx, 0xa
mov ebx, ecx
shr ebx, 1
mov edi, 0x1f
cmp edi, dword [esp + 0xc]
mov edi, 0
sbb edi, ecx
mov ecx, ebx
jb 0x4b4580
and eax, 7
add dx, word [eax + eax + 0x537a92]
add edx, 0xffffffb4
mov edi, dword [esp + 0x20]
mov ebx, dword [esp + 0x60]
mov dword [esp + 0x80], edx
mov eax, dword [esp + 8]
movzx eax, word [eax + 0x2c]
test eax, 0x4000
je 0x4b45e2
mov ecx, dword [esp + 8]
movzx ecx, word [ecx + 0x2e]
cmp cx, word [esp + 0x50]
jl 0x4b45f9
test eax, 0x100
mov eax, dword [esp + 0x50]
mov ecx, eax
cmovne ecx, dword [esp + 0x70]
cmp ax, 0xb
cmovl ecx, eax
xor edx, edx
cmp cx, 0xb
jl 0x4b46ad
mov edi, ecx
movzx ecx, cx
mov ax, 0x28
cmp ecx, 0x100
jb 0x4b4658
movzx edi, di
xor ebx, ebx
mov ax, 0x28
xor edx, edx
nop word cs:[eax + eax]
mov ecx, ebx
shld ecx, edi, 0x1c
add eax, 0x28
shr edx, 4
mov dword [esp + 0xc], edx
mov edx, 0xfff
cmp edx, edi
mov edx, dword [esp + 0xc]
mov edi, 0
sbb edi, ebx
mov edi, ecx
mov ebx, edx
jb 0x4b4630
cmp ecx, 0x10
mov edi, edx
sbb edi, 0
mov ebx, edx
jb 0x4b4695
nop word cs:[eax + eax]
mov edx, ecx
mov dword [esp + 0xc], ecx
mov ecx, ebx
shld ecx, edx, 0x1f
add eax, 0xa
mov edx, ebx
shr ebx, 1
mov edi, 0x1f
cmp edi, dword [esp + 0xc]
mov edi, 0
sbb edi, edx
jb 0x4b4670
and ecx, 7
add ax, word [ecx + ecx + 0x537a92]
add eax, 0xffffffd5
mov edx, eax
mov edi, dword [esp + 0x20]
mov ebx, dword [esp + 0x60]
mov eax, dword [esp + 0x80]
add eax, dword [esp + 0x7c]
add edx, eax
mov eax, dword [esp + 0x54]
mov word [eax + ebx*2], dx
movsx ecx, di
mov ebx, edi
movsx edi, dx
cmp bx, di
jge 0x4b46e0
mov dword [esp + 0xc], edx
lea edx, [ecx + 0x31]
cmp edx, edi
jge 0x4b46f7
mov ebx, dword [esp + 0xc]
jmp 0x4b4723
lea edx, [edi + 0x31]
cmp edx, ecx
jl 0x4b4723
lea edx, [edi + 0x1f]
cmp edx, ecx
jge 0x4b4705
mov eax, dword [esp + 0x20]
lea ebx, [eax + 1]
jmp 0x4b4723
lea edx, [ecx + 0x1f]
cmp edx, edi
mov ebx, dword [esp + 0xc]
jge 0x4b4714
inc ebx
jmp 0x4b4723
sub ecx, edi
movzx ebx, byte [ecx + str._n_n_t_t_b_b_a_a_a]
add ebx, dword [esp + 0x20]
jmp 0x4b4723
mov edx, edi
sub edx, ecx
movzx ecx, byte [edx + str._n_n_t_t_b_b_a_a_a]
add edi, ecx
mov ebx, edi
add ebx, 5
mov dword [esp + 0xc], ebx
mov edx, dword [esp + 0x6c]
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x1c]
test ecx, ecx
jle 0x4b479e
or edx, eax
mov eax, dword [esp + 0x8c]
or dword [esp + 0x2c], eax
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0x38]
jmp 0x4b4768
add edi, 0x20
dec eax
mov edx, ebx
je 0x4b479e
mov ecx, dword [edi]
mov ebx, edx
xor ecx, edx
mov edx, dword [edi + 4]
xor edx, dword [esp + 0x2c]
or edx, ecx
jne 0x4b4760
movzx ecx, byte [edi + 0x16]
xor cl, byte [esp + 3]
js 0x4b4760
mov eax, dword [esp + 0xc]
cmp word [edi + 0x12], ax
mov eax, dword [esp + 0x14]
jge 0x4b4973
mov dword [esp + 0x14], eax
jmp 0x4b4362
mov eax, dword [esp + 0x1c]
mov edi, eax
cmp eax, dword [esp + 0x48]
jge 0x4b485e
xor eax, eax
mov ecx, dword [esp + 0x48]
mov ebx, dword [esp + 0x1c]
cmp ebx, ecx
setl al
add ebx, eax
shl edi, 5
add edi, dword [esp + 0x38]
mov eax, dword [esi + 8]
mov edx, dword [esp + 4]
or eax, dword [edx]
mov ecx, dword [esi + 0xc]
or ecx, dword [edx + 4]
mov dword [edi + 4], ecx
mov dword [edi], eax
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x30]
mov dword [edi + 8], ecx
mov dword [edi + 0xc], eax
movzx eax, word [esp + 0x26]
mov word [edi + 0x10], ax
mov eax, dword [esp + 0xc]
mov word [edi + 0x12], ax
mov eax, dword [esp + 0x20]
mov word [edi + 0x14], ax
movzx eax, byte [esp + 3]
mov byte [edi + 0x16], al
push dword [esp + 0x84]
push dword [edx + 0x18]
push dword [edi + 0x18]
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
mov eax, dword [edi + 0x18]
mov ecx, dword [esp + 0x44]
mov dword [eax + ecx*4], esi
cmp ebx, dword [esp + 0x48]
mov dword [esp + 0x1c], ebx
jl 0x4b4362
mov eax, dword [esp + 0x38]
movzx ecx, word [eax + 0x10]
mov dword [esp + 0x28], ecx
movzx eax, word [eax + 0x12]
cmp byte [esp + 0x10], 2
jae 0x4b488f
mov dword [esp + 0x18], 0
mov dword [esp + 0x3c], eax
jmp 0x4b4362
mov eax, dword [esp + 0xc]
cmp ax, word [esp + 0x3c]
jg 0x4b4362
mov edi, dword [esp + 0x18]
jne 0x4b47ae
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x20]
cmp ax, word [esp + 0x28]
jge 0x4b4362
jmp 0x4b47ae
mov dword [esp + 0x18], 1
mov dword [esp + 0x2c], 0
mov ecx, dword [esp + 0x78]
jmp 0x4b48d7
mov edx, dword [esp + 0x18]
add ecx, 0x40
mov edi, dword [esp + 0x90]
add edi, edx
add edi, 2
add edx, 2
mov dword [esp + 0x18], edx
cmp edi, 1
mov edi, dword [esp + 4]
je 0x4b495b
movzx edi, word [ecx]
cmp di, ax
jle 0x4b4900
movzx ebx, word [ecx + 2]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x2c], eax
mov eax, edi
mov edx, ebx
mov dword [esp + 0x28], edx
jmp 0x4b4910
jne 0x4b4910
movzx ebx, word [ecx + 2]
cmp bx, word [esp + 0x28]
jg 0x4b48e3
nop dword [eax]
movzx edi, word [ecx + 0x20]
cmp di, ax
jle 0x4b4940
movzx ebx, word [ecx + 0x22]
mov edx, dword [esp + 0x18]
lea eax, [edx + 1]
mov dword [esp + 0x2c], eax
mov eax, edi
mov edi, ebx
mov dword [esp + 0x28], edi
jmp 0x4b48b4
jne 0x4b48b0
movzx ebx, word [ecx + 0x22]
cmp bx, word [esp + 0x28]
mov edx, dword [esp + 0x18]
jle 0x4b48b4
jmp 0x4b4921
test byte [esp + 0x74], 1
jne 0x4b49a1
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x3c], eax
jmp 0x4b4366
jne 0x4b49b3
mov dword [esp + 0x14], eax
movzx eax, word [esp + 0x26]
cmp word [edi + 0x10], ax
jl 0x4b4362
jne 0x4b49b3
mov eax, dword [esp + 0x20]
cmp word [edi + 0x14], ax
mov ebx, dword [esp + 0x1c]
jle 0x4b4362
jmp 0x4b47c6
movzx edx, word [ecx]
mov dword [esp + 0x3c], edx
cmp dx, ax
jle 0x4b49bc
movzx ecx, word [ecx + 2]
jmp 0x4b49c9
mov ebx, dword [esp + 0x1c]
jmp 0x4b47c6
jne 0x4b4962
movzx ecx, word [ecx + 2]
cmp cx, word [esp + 0x28]
jle 0x4b4962
mov eax, ecx
mov dword [esp + 0x28], eax
jmp 0x4b4366
test ebx, ebx
je 0x4b4a16
cmp ebx, 2
jl 0x4b4a2c
lea eax, [ebx - 1]
cmp ebx, 2
mov ebx, dword [esp + 0x38]
jne 0x4b4b81
mov ecx, 1
test al, 1
mov esi, dword [esp + 8]
mov eax, ebx
je 0x4b4a30
movzx eax, word [eax + 0x12]
shl ecx, 5
mov edi, dword [esp + 0x38]
lea edx, [edi + ecx]
cmp ax, word [edi + ecx + 0x12]
cmovg ebx, edx
mov eax, ebx
jmp 0x4b4a30
push str.no_query_solution
push dword [esp + 0x5c]
call fcn.00434540
add esp, 8
jmp 0x4b4cda
mov eax, dword [esp + 0x38]
mov dword [esp + 0x14], eax
cmp byte [esp + 0x10], 0
je 0x4b4a89
mov eax, dword [esi + 4]
mov dword [esp + 4], eax
lea ecx, [esi + 0x350]
xor edx, edx
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
nop word cs:[eax + eax]
mov esi, dword [eax + 0x18]
mov esi, dword [esi + edx*4]
mov dword [ecx], esi
movzx ebx, byte [esi + 0x10]
mov byte [ecx - 0x14], bl
shl ebx, 6
mov esi, dword [esp + 4]
mov esi, dword [esi + ebx + 0x30]
mov dword [ecx - 0x4c], esi
inc edx
add ecx, 0x60
cmp edi, edx
jne 0x4b4a60
mov esi, dword [esp + 8]
movzx eax, word [esi + 0x2c]
and eax, 0x180
cmp eax, 0x100
jne 0x4b4b01
cmp word [esp + 0x50], 0
je 0x4b4b01
cmp byte [esi + 0x33], 0
jne 0x4b4b01
mov dword [esp + 0x34], 0xffffffff
mov dword [esp + 0x30], 0xffffffff
mov edx, dword [esi + 0xc]
mov ebx, dword [esp + 0x10]
lea eax, [ebx - 1]
mov edi, dword [esp + 0x14]
mov ecx, dword [edi + 0x18]
mov dword [esp + 4], ecx
movzx eax, ax
mov ecx, dword [esp + 8]
lea esi, [esp + 0x30]
push esi
mov esi, dword [esp + 8]
push dword [esi + ebx*4 - 4]
mov esi, dword [esp + 0x10]
push eax
push 0x80
push edi
call fcn.004c2560
add esp, 0x14
movsx eax, al
mov ecx, dword [esi + 0xc]
cmp dword [ecx], eax
jne 0x4b4b01
mov byte [esi + 0x33], 2
movzx ecx, byte [esi + 0x34]
mov eax, ecx
and al, 0xfb
mov byte [esi + 0x34], al
mov edx, dword [esi + 8]
test edx, edx
je 0x4b4cce
mov edi, dword [esp + 0x14]
mov ch, byte [edi + 0x16]
mov byte [esi + 0x31], ch
movzx eax, word [esi + 0x2c]
test al, 0x80
jne 0x4b4b6c
movsd xmm0, qword [edi + 8]
movsd qword [esi + 0x50], xmm0
test ch, ch
jle 0x4b4bd0
cmp byte [esp + 0x10], 0
je 0x4b4c59
cmp ch, 1
jne 0x4b4c59
mov esi, eax
and esi, 3
test si, si
je 0x4b4c55
or cl, 4
mov esi, dword [esp + 8]
mov byte [esi + 0x34], cl
jmp 0x4b4c59
movsx ecx, byte [edi + 0x16]
cmp dword [edx], ecx
jne 0x4b4c59
mov byte [esi + 0x33], 2
jmp 0x4b4c59
lea edx, [ebx + 0x52]
mov esi, eax
and esi, 0xfffffffe
neg esi
mov ecx, 1
jmp 0x4b4bb5
add edx, 0x40
lea edi, [esi + ecx]
add edi, 2
add ecx, 2
cmp edi, 1
je 0x4b49f2
movzx edi, word [ebx + 0x12]
cmp di, word [edx - 0x20]
jle 0x4b4bc2
lea ebx, [edx - 0x32]
movzx edi, word [ebx + 0x12]
cmp di, word [edx]
jle 0x4b4ba0
lea ebx, [edx - 0x12]
jmp 0x4b4ba0
mov byte [esi + 0x31], 0
mov ebx, dword [esp + 0x10]
test bl, bl
je 0x4b4c59
mov ecx, dword [esp + 0x14]
mov ecx, dword [ecx + 0x18]
mov esi, dword [ecx + ebx*4 - 4]
mov ecx, dword [esi + 0x28]
test ecx, 0x1000
jne 0x4b4c55
and ecx, 0x104
cmp ecx, 0x104
je 0x4b4c55
mov eax, dword [esp + 0x10]
dec eax
mov dword [esp + 0x34], 0
mov dword [esp + 0x30], 0
lea edi, [esp + 0x30]
movzx eax, ax
mov ecx, dword [esp + 8]
push edi
push esi
mov esi, ecx
push eax
push 0x800
push dword [esp + 0x24]
call fcn.004c2560
add esp, 0x14
movsx eax, al
mov edx, dword [esi + 8]
cmp dword [edx], eax
jne 0x4b4c4f
or byte [esi + 0x34], 4
movsd xmm0, qword [esp + 0x30]
movsd qword [esi + 0x50], xmm0
movzx eax, word [esi + 0x2c]
jmp 0x4b4c59
mov esi, dword [esp + 8]
test eax, 0x200
je 0x4b4cce
movsx eax, byte [esi + 0x31]
cmp dword [edx], eax
jne 0x4b4cce
cmp byte [esp + 0x10], 0
je 0x4b4cce
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], 0
mov ebx, dword [esp + 0x10]
lea eax, [ebx - 1]
mov edi, dword [esp + 0x14]
mov ecx, dword [edi + 0x18]
mov dword [esp + 4], ecx
movzx eax, ax
mov ecx, dword [esp + 8]
lea esi, [esp + 0x30]
push esi
mov esi, dword [esp + 8]
push dword [esi + ebx*4 - 4]
mov esi, dword [esp + 0x10]
push eax
push 0
push edi
call fcn.004c2560
add esp, 0x14
movsx eax, al
mov ecx, dword [esi + 8]
cmp dword [ecx], eax
jne 0x4b4cce
or byte [esi + 0x34], 8
movsd xmm0, qword [esp + 0x30]
movsd qword [esi + 0x50], xmm0
mov eax, dword [esp + 0x14]
movzx eax, word [eax + 0x10]
mov word [esi + 0x36], ax
mov ecx, dword [esp + 0x5c]
mov edx, dword [esp + 0x4c]
call fcn.0043f4f0
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret