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

Disassembly:
sub esp, 0xcc
mov eax, dword [0x6651c0]
xor eax, esp
mov dword [esp + 0xc8], eax
mov eax, dword [esp + 0xd8]
xor edx, edx
and dword [esp + 0x2c], edx
push ebx
mov ebx, dword [esp + 0xd4]
push ebp
push esi
xor ebp, ebp
mov dword [esp + 0x14], ebx
mov cl, byte [ebx + 0x15]
and cl, 2
mov dword [esp + 0x4c], edx
push edi
mov edi, dword [esp + 0xe4]
mov byte [esp + 0x16], cl
je 0x5264f0
mov edx, dword [eax]
mov dword [esp + 0x3c], edx
test cl, cl
lea esi, [eax + 4]
cmove esi, eax
movsx eax, byte [edi]
mov dword [esp + 0x20], esi
test eax, eax
je case.default.0x526807
mov dword [esp + 0x64], 3
cmp eax, 0x25
je 0x526539
mov ebp, edi
inc edi
mov al, byte [edi]
test al, al
je 0x526521
cmp al, 0x25
jne 0x526516
mov eax, edi
sub eax, ebp
push eax
push ebp
push ebx
call fcn.005276d9
add esp, 0xc
cmp byte [edi], 0
je case.default.0x526807
inc edi
mov dword [esp + 0x38], edi
movsx ecx, byte [edi]
test ecx, ecx
je 0x527532
xor eax, eax
or ebx, 0xffffffff
mov byte [esp + 0x2f], al
mov byte [esp + 0x17], al
mov byte [esp + 0x27], al
mov byte [esp + 0x26], al
mov byte [esp + 0x14], al
mov byte [esp + 0x13], al
mov dword [esp + 0x34], eax
mov byte [esp + 0x1f], al
mov dword [esp + 0x28], ebx
mov edx, esi
cmp ecx, 0x31
jg 0x526707
je 0x52673b
cmp ecx, 0x2b
jg 0x52663b
je 0x526631
mov eax, ecx
sub eax, 0x20
je 0x526627
sub eax, 1
je 0x52661d
dec eax
sub eax, 1
je 0x526613
sub eax, 7
jne 0x5267b4
cmp byte [esp + 0x16], al
je 0x5265c9
push dword [esp + 0x3c]
call fcn.005444c3
pop ecx
mov esi, eax
mov dword [esp + 0x34], eax
jmp 0x5265d6
add esi, 4
mov dword [esp + 0x20], esi
mov esi, dword [edx]
mov dword [esp + 0x34], esi
test esi, esi
jns 0x5265f2
mov ecx, esi
mov byte [esp + 0x13], 1
neg ecx
xor eax, eax
cmp esi, 0x80000001
cmovge eax, ecx
mov dword [esp + 0x34], eax
lea edx, [edi + 1]
mov al, byte [edx]
movsx ecx, al
cmp al, 0x2e
je 0x52677a
cmp al, 0x6c
je 0x52677a
mov dword [esp + 0x38], edx
jmp 0x5267b4
mov byte [esp + 0x27], 1
jmp 0x52677e
mov byte [esp + 0x17], 1
jmp 0x52677e
mov byte [esp + 0x14], 0x20
jmp 0x52677e
mov byte [esp + 0x14], 0x2b
jmp 0x52677e
mov eax, ecx
sub eax, 0x2c
je 0x526700
sub eax, 1
je 0x5266f9
sub eax, 1
je 0x526668
dec eax
sub eax, 1
jne 0x5267b4
mov byte [esp + 0x2f], 1
jmp 0x52677e
inc edi
mov dword [esp + 0x38], edi
movsx ecx, byte [edi]
cmp ecx, 0x2a
jne 0x5266bf
cmp byte [esp + 0x16], 0
je 0x52668e
push dword [esp + 0x3c]
call fcn.005444c3
pop ecx
mov ebx, eax
mov dword [esp + 0x28], eax
jmp 0x52669b
mov ebx, dword [edx]
add esi, 4
mov dword [esp + 0x20], esi
mov dword [esp + 0x28], ebx
test ebx, ebx
jns 0x5266b5
mov ecx, ebx
or eax, 0xffffffff
neg ecx
cmp ebx, 0x80000001
cmovge eax, ecx
mov ebx, eax
mov dword [esp + 0x28], ebx
inc edi
mov dword [esp + 0x38], edi
movsx ecx, byte [edi]
jmp 0x5266ea
xor ebx, ebx
cmp ecx, 0x30
jl 0x5266e0
cmp ecx, 0x39
ja 0x5266dc
imul ebx, ebx, 0xa
add ecx, 0xffffffd0
add ebx, ecx
inc edi
movsx ecx, byte [edi]
cmp ecx, 0x30
jge 0x5266c6
mov dword [esp + 0x38], edi
and ebx, 0x7fffffff
mov dword [esp + 0x28], ebx
cmp ecx, 0x6c
jne 0x5267b4
dec edi
jmp 0x52677e
mov byte [esp + 0x13], 1
jmp 0x52677e
mov byte [esp + 0x26], 0x2c
jmp 0x52677e
cmp ecx, 0x36
jg 0x52672a
je 0x52673b
mov eax, ecx
sub eax, 0x32
je 0x52673b
sub eax, 1
je 0x52673b
sub eax, 1
je 0x52673b
sub eax, 1
jne 0x5267b4
jmp 0x52673b
mov eax, ecx
sub eax, 0x37
je 0x52673b
sub eax, 1
je 0x52673b
sub eax, 1
jne 0x526790
inc edi
lea esi, [ecx - 0x30]
mov dword [esp + 0x38], edi
movsx ecx, byte [edi]
cmp ecx, 0x30
jl 0x526765
cmp ecx, 0x39
ja 0x526761
imul esi, esi, 0xa
add ecx, 0xffffffd0
add esi, ecx
inc edi
movsx ecx, byte [edi]
cmp ecx, 0x30
jge 0x52674b
mov dword [esp + 0x38], edi
and esi, 0x7fffffff
mov dword [esp + 0x34], esi
cmp ecx, 0x2e
je 0x526779
cmp ecx, 0x6c
jne 0x5267b4
dec edi
mov esi, dword [esp + 0x20]
inc edi
mov dword [esp + 0x38], edi
movsx ecx, byte [edi]
test ecx, ecx
jne 0x526572
jmp 0x5267b4
sub eax, 0x33
jne 0x5267b4
inc edi
mov byte [esp + 0x1f], 1
mov dword [esp + 0x38], edi
movsx ecx, byte [edi]
cmp ecx, 0x6c
jne 0x5267b4
inc edi
mov byte [esp + 0x1f], 2
mov dword [esp + 0x38], edi
movsx ecx, byte [edi]
mov edx, dword [esp + 0x20]
mov eax, 0x656fa0
mov dword [esp + 0x44], eax
xor edi, edi
mov byte [esp + 0x15], 0x11
mov esi, eax
movsx eax, byte [esi]
cmp ecx, eax
je 0x5267e7
add esi, 6
inc edi
cmp esi, 0x65702a
jl 0x5267ca
mov cl, byte [esp + 0x15]
mov esi, dword [esp + 0x44]
jmp 0x5267fb
imul esi, edi, 6
add esi, 0x656fa0
mov dword [esp + 0x44], esi
mov cl, byte [esi + 3]
mov byte [esp + 0x15], cl
movzx eax, cl
cmp eax, 0x10
ja case.default.0x526807
jmp dword [eax*4 + 0x52755d]
mov byte [esp + 0x1f], 1
mov byte [esp + 0x26], 0
test byte [esi + 2], 1
je 0x526873
cmp byte [esp + 0x16], 0
je 0x526831
push dword [esp + 0x3c]
call fcn.005444c3
pop ecx
jmp 0x526851
mov al, byte [esp + 0x1f]
test al, al
je 0x526849
cmp al, 2
jne 0x526849
add dword [esp + 0x20], 8
mov edi, dword [edx]
mov esi, dword [edx + 4]
jmp 0x526855
mov eax, dword [edx]
add dword [esp + 0x20], 4
cdq
mov edi, eax
mov esi, edx
test esi, esi
jg 0x52686d
jl 0x52685f
test edi, edi
jae 0x52686d
neg edi
push 0x2d
adc esi, 0
pop eax
neg esi
mov cl, al
jmp 0x5268ab
mov cl, byte [esp + 0x14]
jmp 0x5268af
cmp byte [esp + 0x16], 0
je 0x52688a
push dword [esp + 0x3c]
call fcn.005444c3
pop ecx
mov edi, eax
mov esi, edx
jmp 0x5268a9
mov al, byte [esp + 0x1f]
mov edi, dword [edx]
test al, al
je 0x5268a2
cmp al, 2
jne 0x5268a2
add dword [esp + 0x20], 8
mov esi, dword [edx + 4]
jmp 0x5268a9
add dword [esp + 0x20], 4
xor esi, esi
xor cl, cl
mov byte [esp + 0x14], cl
mov eax, edi
or eax, esi
jne 0x5268b9
mov byte [esp + 0x27], al
cmp byte [esp + 0x2f], 0
je 0x5268d6
xor eax, eax
test cl, cl
mov ecx, dword [esp + 0x34]
setne al
sub ecx, eax
cmp ebx, ecx
cmovl ebx, ecx
mov dword [esp + 0x28], ebx
cmp ebx, 0x25
jge 0x5268ef
push 0x46
pop ebp
lea eax, [esp + 0x90]
mov dword [esp + 0x54], ebp
mov dword [esp + 0x40], eax
jmp 0x52693a
mov eax, ebx
cdq
mov ebp, eax
mov ecx, edx
push 0xa
pop eax
add ebp, eax
mov dword [esp + 0x54], ebp
adc ecx, 0
cmp byte [esp + 0x26], 0
je 0x526919
mov eax, ebx
cdq
idiv dword [esp + 0x64]
cdq
add ebp, eax
mov dword [esp + 0x54], ebp
adc ecx, edx
push ecx
mov ecx, dword [esp + 0x1c]
push ebp
push ecx
call fcn.0055173f
mov ecx, eax
mov dword [esp + 0x4c], eax
add esp, 0xc
mov dword [esp + 0x50], ecx
test ecx, ecx
je case.default.0x526807
dec ebp
add ebp, eax
cmp byte [esp + 0x15], 0xf
jne 0x526991
push 0
push 0xa
pop eax
push eax
push esi
push edi
call fcn.0059db80
mov dword [esp + 0x30], ecx
mov dword [esp + 0x60], ebx
cmp ecx, 4
jge 0x526972
push 0
push 0xa
push edx
push eax
call fcn.0059d380
cmp eax, 1
jne 0x526976
test edx, edx
jne 0x526976
xor ecx, ecx
jmp 0x52697a
mov ecx, dword [esp + 0x30]
mov al, byte [ecx*2 + 0x657331]
mov byte [ebp - 1], al
sub ebp, 2
mov al, byte [ecx*2 + str.thstndrd]
mov byte [ebp], al
mov ecx, dword [esp + 0x44]
movzx eax, byte [ecx + 4]
add eax, 0x656edc
mov dword [esp + 0x5c], eax
movzx eax, byte [ecx + 1]
mov ebx, dword [esp + 0x5c]
cdq
mov ecx, edx
mov dword [esp + 0x4c], eax
mov dword [esp + 0x30], ecx
push ecx
push eax
push esi
push edi
dec ebp
call fcn.0059d380
push dword [esp + 0x30]
push dword [esp + 0x50]
mov al, byte [eax + ebx]
push esi
push edi
mov byte [ebp], al
call fcn.0059d2e0
mov ecx, dword [esp + 0x30]
mov esi, edx
mov edi, eax
mov eax, dword [esp + 0x4c]
test esi, esi
ja 0x5269b5
jb 0x5269ea
test edi, edi
jne 0x5269b5
mov edi, dword [esp + 0x54]
mov edx, dword [esp + 0x40]
mov eax, edx
mov ebx, dword [esp + 0x28]
sub eax, ebp
lea ecx, [edi - 1]
add ecx, eax
cmp ecx, ebx
jge 0x526a13
mov eax, ebx
sub eax, ecx
mov ecx, ebx
dec ebp
mov byte [ebp], 0x30
sub eax, 1
jne 0x526a09
mov bl, byte [esp + 0x26]
test bl, bl
je 0x526a54
lea eax, [ecx - 1]
push 3
pop ecx
cdq
idiv ecx
xor ecx, ecx
mov esi, eax
inc edx
sub ebp, esi
test esi, esi
jle 0x526a50
push 3
pop edi
lea eax, [esi + ecx]
mov al, byte [eax + ebp]
mov byte [ecx + ebp], al
sub edx, 1
jne 0x526a47
inc ecx
mov edx, edi
dec esi
mov byte [ecx + ebp], bl
inc ecx
test esi, esi
jg 0x526a32
mov edi, dword [esp + 0x54]
mov edx, dword [esp + 0x40]
mov al, byte [esp + 0x14]
test al, al
je 0x526a60
dec ebp
mov byte [ebp], al
cmp byte [esp + 0x27], 0
je 0x526a87
mov eax, dword [esp + 0x44]
mov al, byte [eax + 5]
test al, al
je 0x526a87
movzx eax, al
add eax, 0x656f98
jmp 0x526a81
dec ebp
inc eax
mov byte [ebp], cl
mov cl, byte [eax]
test cl, cl
jne 0x526a7c
sub edx, ebp
lea esi, [edx - 1]
add esi, edi
mov ebx, dword [esp + 0x18]
mov cl, byte [esp + 0x13]
mov eax, dword [esp + 0x34]
sub eax, esi
mov dword [esp + 0x34], eax
test eax, eax
jle 0x5274f9
test cl, cl
jne 0x526ab8
push 0x20
push eax
push ebx
call fcn.00527732
add esp, 0xc
push esi
push ebp
push ebx
call fcn.005276d9
add esp, 0xc
cmp byte [esp + 0x13], 0
je 0x527504
push 0x20
push dword [esp + 0x38]
push ebx
call fcn.00527732
jmp 0x527501
cmp byte [esp + 0x16], 0
je 0x526b1a
mov ebp, dword [esp + 0x3c]
mov edx, dword [ebp + 4]
cmp dword [ebp], edx
jg 0x526af7
xorps xmm0, xmm0
jmp 0x526b23
mov eax, dword [ebp + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
push ecx
mov dword [ebp + 4], eax
call fcn.0058436b
fstp qword [esp + 0x60]
movsd xmm0, qword [esp + 0x60]
pop ecx
mov cl, byte [esp + 0x15]
jmp 0x526b23
add dword [esp + 0x20], 8
movsd xmm0, qword [edx]
test ebx, ebx
jns 0x526b2c
push 6
pop ebx
jmp 0x526b36
mov eax, 0x5f5e100
cmp ebx, eax
cmovg ebx, eax
mov dword [esp + 0x28], ebx
cmp cl, 1
jne 0x526b45
mov ecx, ebx
neg ecx
jmp 0x526b4f
cmp cl, 3
mov ecx, ebx
je 0x526b4f
lea ecx, [ebx + 1]
cmp byte [esp + 0x17], 0
push 0x10
pop eax
push 0x1a
pop edx
cmovne eax, edx
push eax
push ecx
push ecx
push ecx
lea eax, [esp + 0x78]
movsd qword [esp], xmm0
push eax
call fcn.00567650
mov al, byte [esp + 0x7d]
add esp, 0x14
test al, al
je 0x526c03
cmp al, 2
jne 0x526ba3
cmp byte [esp + 0x2f], 0
mov ebp, str.null
mov eax, 0x658f30
cmove ebp, eax
push ebp
call fcn.00578223
pop ecx
mov esi, eax
jmp 0x526a8e
cmp byte [esp + 0x2f], 0
je 0x526bc4
mov eax, dword [esp + 0x74]
mov byte [eax], 0x39
mov eax, 0x3e8
mov dword [esp + 0x70], eax
mov dword [esp + 0x6c], 1
jmp 0x526c07
push 5
lea eax, [esp + 0x94]
push str._Inf
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
lea ebp, [esp + 0x90]
cmp byte [esp + 0x68], 0x2d
je 0x526b95
mov al, byte [esp + 0x14]
test al, al
je 0x526bfa
mov byte [esp + 0x90], al
jmp 0x526b95
lea ebp, [esp + 0x91]
jmp 0x526b95
mov eax, dword [esp + 0x70]
cmp byte [esp + 0x68], 0x2d
movzx ecx, byte [esp + 0x14]
push 0x2d
pop edx
cmove ecx, edx
dec eax
mov dword [esp + 0x30], ecx
mov cl, byte [esp + 0x15]
cmp cl, 3
jne 0x526c53
test ebx, ebx
jle 0x526c2e
dec ebx
mov dword [esp + 0x28], ebx
cmp byte [esp + 0x27], 0
sete byte [esp + 0x14]
cmp eax, 0xfffffffc
jl 0x526c4b
cmp eax, ebx
jg 0x526c4b
sub ebx, eax
mov cl, 1
mov dword [esp + 0x28], ebx
jmp 0x526c4d
mov cl, 2
mov byte [esp + 0x15], cl
jmp 0x526c5b
mov dl, byte [esp + 0x17]
mov byte [esp + 0x14], dl
xor edi, edi
lea esi, [esp + 0x90]
cmp cl, 2
cmovne edi, eax
xor eax, eax
test edi, edi
cmovg eax, edi
cdq
mov ecx, eax
mov ebx, edx
mov eax, dword [esp + 0x28]
cdq
add ecx, eax
mov eax, dword [esp + 0x34]
adc ebx, edx
cdq
add ecx, eax
adc ebx, edx
add ecx, 0xf
adc ebx, 0
cmp byte [esp + 0x26], 0
je 0x526ca7
test edi, edi
jle 0x526ca7
lea eax, [edi + 2]
push 3
cdq
pop ebp
idiv ebp
cdq
add ecx, eax
adc ebx, edx
test ebx, ebx
jl 0x526ccf
jg 0x526cb2
cmp ecx, 0x46
jbe 0x526ccf
push ebx
push ecx
mov ecx, dword [esp + 0x20]
push ecx
call fcn.0055173f
add esp, 0xc
mov dword [esp + 0x50], eax
mov esi, eax
test eax, eax
je case.default.0x526807
mov ecx, dword [esp + 0x28]
mov ebp, esi
mov edx, dword [esp + 0x30]
test ecx, ecx
setg al
or al, byte [esp + 0x17]
or al, byte [esp + 0x27]
mov byte [esp + 0x1f], al
test dl, dl
je 0x526cf1
mov byte [esi], dl
inc esi
xor ebx, ebx
test edi, edi
jns 0x526cfd
mov byte [esi], 0x30
inc esi
jmp 0x526d3d
mov cl, byte [esp + 0x26]
cmp ebx, dword [esp + 0x6c]
jge 0x526d12
mov eax, dword [esp + 0x74]
add eax, ebx
inc ebx
mov al, byte [eax]
jmp 0x526d14
mov al, 0x30
mov byte [esi], al
inc esi
test cl, cl
je 0x526d30
xor edx, edx
mov eax, edi
div dword [esp + 0x64]
test edx, edx
jne 0x526d30
cmp edi, 1
jbe 0x526d30
mov byte [esi], 0x2c
inc esi
sub edi, 1
jns 0x526d01
mov ecx, dword [esp + 0x28]
mov al, byte [esp + 0x1f]
test al, al
je 0x526d50
mov byte [esi], 0x2e
inc esi
jmp 0x526d50
test ecx, ecx
jle 0x526d78
mov byte [esi], 0x30
inc esi
dec ecx
add edi, 1
js 0x526d47
test ecx, ecx
jle 0x526d78
dec ecx
cmp ebx, dword [esp + 0x6c]
jge 0x526d6b
mov eax, dword [esp + 0x74]
add eax, ebx
inc ebx
mov al, byte [eax]
jmp 0x526d6d
mov al, 0x30
mov byte [esi], al
inc esi
test ecx, ecx
jg 0x526d59
mov al, byte [esp + 0x1f]
cmp byte [esp + 0x14], 0
je 0x526da6
test al, al
je 0x526da6
jmp 0x526d89
dec esi
mov byte [esi], 0
cmp byte [esi - 1], 0x30
je 0x526d85
cmp byte [esi - 1], 0x2e
jne 0x526da6
cmp byte [esp + 0x17], 0
je 0x526da2
mov byte [esi], 0x30
inc esi
jmp 0x526da6
dec esi
mov byte [esi], 0
cmp byte [esp + 0x15], 2
jne 0x526e05
mov eax, dword [esp + 0x44]
lea ecx, [esi + 1]
mov edx, dword [esp + 0x70]
dec edx
mov edi, edx
movzx eax, byte [eax + 4]
neg edi
test edx, edx
push 0x64
cmovns edi, edx
mov al, byte [eax + 0x656edc]
mov byte [esi], al
sets al
lea esi, [ecx + 1]
lea eax, [eax*2 + 0x2b]
mov byte [ecx], al
pop ecx
cmp edi, ecx
jl 0x526df0
mov eax, edi
cdq
idiv ecx
add al, 0x30
mov edi, edx
mov byte [esi], al
inc esi
mov eax, edi
push 0xa
cdq
pop ecx
idiv ecx
add al, 0x30
add dl, 0x30
mov byte [esi], al
mov byte [esi + 1], dl
add esi, 2
mov byte [esi], 0
sub esi, ebp
cmp byte [esp + 0x2f], 0
je 0x526a8e
mov cl, byte [esp + 0x13]
test cl, cl
jne 0x5273c0
mov ebx, dword [esp + 0x34]
cmp esi, ebx
jge 0x5273c0
mov ecx, ebx
mov edx, ebx
sub ecx, esi
cmp ebx, ecx
jl 0x526e46
mov esi, ebp
sub esi, ecx
mov al, byte [edx + esi]
mov byte [edx + ebp], al
dec edx
cmp edx, ecx
jge 0x526e3b
xor eax, eax
cmp byte [esp + 0x30], al
setne al
test ecx, ecx
je 0x526e61
push ecx
add eax, ebp
push 0x30
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
mov esi, ebx
jmp 0x526a8e
cmp byte [esp + 0x16], 0
mov ebx, dword [esp + 0x18]
jne 0x5274f7
mov ecx, dword [edx]
mov eax, dword [ebx + 0x10]
add dword [esp + 0x20], 4
mov dword [ecx], eax
jmp 0x5274f7
xor esi, esi
mov byte [esp + 0x90], 0x25
lea ebp, [esp + 0x90]
inc esi
jmp 0x526a8e
cmp byte [esp + 0x16], 0
je 0x526f0b
push dword [esp + 0x3c]
call fcn.00544963
xor esi, esi
mov edx, eax
inc esi
mov dword [esp + 0x48], esi
pop ecx
test edx, edx
je 0x526efe
mov cl, byte [edx]
inc edx
mov byte [esp + 0x90], cl
movsx ecx, cl
and ecx, 0xc0
cmp cl, 0xc0
jne 0x526fca
mov cl, byte [edx]
mov al, cl
and al, 0xc0
cmp al, 0x80
jne 0x526fca
mov byte [esp + esi + 0x90], cl
inc esi
inc edx
mov dword [esp + 0x44], esi
cmp esi, 4
jl 0x526ed9
jmp 0x526fca
mov byte [esp + 0x90], 0
jmp 0x526fca
add dword [esp + 0x20], 4
mov ecx, dword [edx]
cmp ecx, 0x80
jae 0x526f29
xor esi, esi
mov byte [esp + 0x90], cl
inc esi
jmp 0x526fc6
mov eax, ecx
cmp ecx, 0x800
jae 0x526f52
shr eax, 6
and cl, 0x3f
and al, 0x1f
sub al, 0x40
add cl, 0x80
mov byte [esp + 0x90], al
mov byte [esp + 0x91], cl
push 2
jmp 0x526fc5
mov dl, cl
and dl, 0x3f
add dl, 0x80
cmp ecx, 0x10000
jae 0x526f8e
shr eax, 0xc
and al, 0xf
shr ecx, 6
sub al, 0x20
mov byte [esp + 0x92], dl
and cl, 0x3f
mov byte [esp + 0x90], al
push 3
add cl, 0x80
pop eax
mov byte [esp + 0x91], cl
mov esi, eax
jmp 0x526fc6
shr eax, 0x12
and al, 7
mov byte [esp + 0x93], dl
sub al, 0x10
mov byte [esp + 0x90], al
mov eax, ecx
shr eax, 0xc
shr ecx, 6
and al, 0x3f
add al, 0x80
and cl, 0x3f
add cl, 0x80
mov byte [esp + 0x91], al
mov byte [esp + 0x92], cl
push 4
pop esi
mov dword [esp + 0x44], esi
cmp ebx, 1
jle 0x5270b6
mov ecx, dword [esp + 0x34]
xor edi, edi
mov ebp, dword [esp + 0x28]
inc edi
sub ecx, ebp
xor ebx, ebx
mov eax, ecx
inc ecx
mov dword [esp + 0x34], ecx
cmp ecx, edi
jle 0x527007
cmp byte [esp + 0x13], bl
jne 0x527007
mov ecx, dword [esp + 0x18]
push 0x20
push eax
push ecx
call fcn.00527732
add esp, 0xc
and dword [esp + 0x34], ebx
push esi
lea eax, [esp + 0x94]
push eax
push dword [esp + 0x20]
call fcn.005276d9
add esp, 0xc
dec ebp
mov dword [esp + 0x28], ebp
cmp ebp, 1
jle 0x5270b6
mov eax, esi
cdq
mov ecx, edx
mov esi, eax
mov dword [esp + 0x5c], ecx
lea eax, [ebp - 1]
cdq
cmp ebx, edx
jl 0x527047
jg 0x527043
cmp edi, eax
jbe 0x527047
mov edi, eax
mov ebx, edx
push ebx
push edi
push ecx
push esi
call fcn.0059da60
mov ebp, eax
xor ecx, ecx
mov eax, dword [esp + 0x18]
mov eax, dword [eax + 0x10]
add eax, ebp
adc ecx, edx
test ecx, ecx
jl 0x52707c
jg 0x52706e
mov ecx, dword [esp + 0x18]
cmp eax, dword [ecx + 8]
jb 0x52707c
push edx
push ebp
push dword [esp + 0x20]
call fcn.0057806a
add esp, 0xc
mov edx, dword [esp + 0x18]
cmp byte [edx + 0x14], 0
jne 0x5270b2
mov eax, dword [edx + 4]
sub eax, ebp
add eax, dword [edx + 0x10]
push ebp
push eax
push edx
call fcn.005276d9
mov ebp, dword [esp + 0x34]
add esp, 0xc
mov ecx, dword [esp + 0x5c]
sub ebp, edi
shld ebx, edi, 1
mov dword [esp + 0x28], ebp
add edi, edi
cmp ebp, 1
jg 0x527035
mov esi, dword [esp + 0x44]
lea ebp, [esp + 0x90]
jmp 0x52738c
cmp byte [esp + 0x16], 0
je 0x5270d9
push dword [esp + 0x3c]
call fcn.00544963
pop ecx
mov ebp, eax
mov cl, 5
jmp 0x5270e0
add dword [esp + 0x20], 4
mov ebp, dword [edx]
test ebp, ebp
jne 0x5270eb
mov ebp, 0x658f34
jmp 0x527141
cmp cl, 6
jne 0x527141
mov eax, dword [esp + 0x18]
cmp dword [eax + 0x10], 0
jne 0x52713d
cmp dword [eax + 0xc], 0
je 0x52713d
cmp dword [esp + 0x34], 0
jne 0x52713d
test ebx, ebx
jns 0x52713d
cmp byte [eax + 0x14], 0
jne 0x52713d
mov ebx, eax
push ebp
push dword [ebx]
mov dword [ebx + 4], ebp
call fcn.005603f9
push ebp
mov dword [ebx + 8], eax
call sub.api_ms_win_crt_string_l1_1_0.dll_strlen
or byte [ebx + 0x15], 4
and eax, 0x7fffffff
add esp, 0xc
mov dword [ebx + 0x10], eax
xor esi, esi
jmp 0x526a92
mov dword [esp + 0x50], ebp
test ebx, ebx
js 0x527190
cmp byte [esp + 0x17], 0
je 0x527172
mov esi, ebp
jmp 0x527167
mov al, byte [esi]
dec ebx
test al, al
je 0x52716b
inc esi
cmp al, 0xc0
jb 0x527167
jmp 0x52715f
inc esi
mov al, byte [esi]
and al, 0xc0
cmp al, 0x80
je 0x52715e
test ebx, ebx
jg 0x527150
sub esi, ebp
jmp 0x52738c
xor esi, esi
test ebx, ebx
jle 0x526a8e
cmp byte [esi + ebp], 0
je 0x526a8e
inc esi
cmp esi, ebx
jl 0x52717c
jmp 0x526a8e
push ebp
call sub.api_ms_win_crt_string_l1_1_0.dll_strlen
mov esi, eax
pop ecx
and esi, 0x7fffffff
jmp 0x527381
push 0x27
pop eax
push 0x22
cmp cl, 0xe
pop esi
cmove eax, esi
cmp byte [esp + 0x16], 0
mov dword [esp + 0x40], eax
je 0x5271d1
push dword [esp + 0x3c]
call fcn.00544963
pop ecx
mov cl, byte [esp + 0x15]
mov ebp, eax
mov dword [esp + 0x4c], eax
jmp 0x5271dc
mov ebp, dword [edx]
add dword [esp + 0x20], 4
mov dword [esp + 0x4c], ebp
mov dword [esp + 0x5c], ebp
test ebp, ebp
jne 0x5271f8
cmp cl, 0xa
mov ebp, str.NULL
mov eax, str._NULL_
cmovne ebp, eax
mov dword [esp + 0x4c], ebp
mov eax, ebx
xorps xmm0, xmm0
cdq
mov ebx, eax
movlpd qword [esp + 0x44], xmm0
mov esi, dword [esp + 0x48]
mov eax, edx
mov edx, dword [esp + 0x44]
mov ecx, ebx
or ecx, eax
movlpd qword [esp + 0x54], xmm0
mov edi, dword [esp + 0x54]
mov dword [esp + 0x30], eax
je 0x5272ae
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x28], eax
mov al, byte [edi + ebp]
test al, al
je 0x527292
cmp al, byte [esp + 0x40]
jne 0x527247
add edx, 1
adc esi, 0
cmp byte [esp + 0x17], 0
je 0x52727a
and al, 0xc0
cmp al, 0xc0
jne 0x52727a
mov al, byte [edi + ebp + 1]
and al, 0xc0
cmp al, 0x80
jne 0x52727a
mov ecx, dword [esp + 0x28]
mov al, byte [edi + ebp + 2]
add edi, 1
adc ecx, 0
and al, 0xc0
cmp al, 0x80
je 0x527262
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x30]
add edi, 1
adc dword [esp + 0x28], 0
add ebx, 0xffffffff
mov eax, ebx
adc ecx, 0xffffffff
or eax, ecx
mov dword [esp + 0x30], ecx
jne 0x527234
mov ebx, dword [esp + 0x28]
cmp dword [esp + 0x5c], 0
je 0x5272b8
cmp byte [esp + 0x15], 0xa
jne 0x5272b8
mov dword [esp + 0x30], 1
jmp 0x5272bd
mov ebx, dword [esp + 0x58]
mov dword [esp + 0x28], ebx
jmp 0x527296
and dword [esp + 0x30], 0
push 3
pop eax
mov ecx, edi
add ecx, eax
mov eax, ebx
adc eax, 0
add edx, ecx
adc esi, eax
test esi, esi
jl 0x5272f6
jg 0x5272d8
cmp edx, 0x46
jbe 0x5272f6
push esi
push edx
push dword [esp + 0x20]
call fcn.0055173f
add esp, 0xc
mov dword [esp + 0x50], eax
mov ebp, eax
test eax, eax
je case.default.0x526807
jmp 0x5272fd
lea ebp, [esp + 0x90]
cmp dword [esp + 0x30], 0
xorps xmm0, xmm0
movlpd qword [esp + 0x5c], xmm0
je 0x52731b
mov eax, dword [esp + 0x40]
xor esi, esi
mov byte [ebp], al
inc esi
xor eax, eax
jmp 0x527323
mov eax, dword [esp + 0x60]
mov esi, dword [esp + 0x5c]
movlpd qword [esp + 0x54], xmm0
test ebx, ebx
jl 0x52736c
jg 0x527333
test edi, edi
je 0x52736c
mov ebx, dword [esp + 0x58]
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x4c]
mov dl, byte [ecx + edx]
mov byte [esi + ebp], dl
add esi, 1
adc eax, 0
cmp dl, byte [esp + 0x40]
jne 0x52735a
mov byte [esi + ebp], dl
add esi, 1
adc eax, 0
add ecx, 1
adc ebx, 0
cmp ebx, dword [esp + 0x28]
jl 0x52733b
jg 0x52736c
cmp ecx, edi
jb 0x52733b
cmp dword [esp + 0x30], 0
je 0x52737d
mov ecx, dword [esp + 0x40]
mov byte [esi + ebp], cl
add esi, 1
mov byte [esi + ebp], 0
cmp byte [esp + 0x17], 0
je 0x526a8e
mov ebx, dword [esp + 0x34]
test ebx, ebx
jle 0x526a8e
lea edx, [esi - 1]
test edx, edx
js 0x526a8e
mov al, byte [edx + ebp]
lea ecx, [ebx + 1]
and al, 0xc0
cmp al, 0x80
cmovne ecx, ebx
sub edx, 1
mov ebx, ecx
jns 0x5273a3
mov dword [esp + 0x34], ebx
jmp 0x526a8e
mov ebx, dword [esp + 0x18]
jmp 0x526a96
mov ebx, dword [esp + 0x18]
test byte [ebx + 0x15], 1
je case.default.0x526807
add dword [esp + 0x20], 4
cmp byte [esp + 0x27], 0
je 0x527413
mov esi, dword [edx]
test esi, esi
je 0x5274f7
test dword [esi + 4], 0x800
jne 0x5274f7
push dword [esi + 8]
push ebx
call fcn.00527717
push esi
push dword [ebx]
call fcn.00573839
add esp, 0x10
jmp 0x5274f7
mov edi, dword [edx]
test edi, edi
je 0x5274f7
cmp dword [edi + 4], 0
je 0x5274f7
push dword [edi + 4]
push dword [edi]
push ebx
call fcn.005276d9
mov ebx, dword [ebx]
add esp, 0xc
mov edi, dword [edi]
test ebx, ebx
je 0x52746d
cmp dword [ebx + 0x44], 0xfffffffe
jne 0x52746d
mov esi, dword [ebx + 0x10c]
test esi, esi
je 0x52746d
mov esi, dword [esi + 0xf4]
test esi, esi
je 0x52746d
push esi
call sub.api_ms_win_crt_string_l1_1_0.dll_strlen
add eax, esi
pop ecx
cmp edi, esi
jb 0x52746d
cmp edi, eax
jae 0x52746d
sub edi, esi
mov dword [ebx + 0x44], edi
mov ebx, dword [esp + 0x18]
jmp 0x5274f7
mov ebx, dword [esp + 0x18]
test byte [ebx + 0x15], 1
je case.default.0x526807
mov esi, dword [edx]
add dword [esp + 0x20], 4
mov eax, dword [esi + 0xc]
test eax, eax
je 0x527499
cmp byte [esp + 0x17], 0
je 0x5274c7
cmp dword [esi + 8], 0
je 0x5274c3
cmp dword [esi + 4], 0
je 0x5274be
push dword [esi + 4]
push ebx
call fcn.00527717
push 1
push 0x65a800
push ebx
call fcn.005276d9
add esp, 0x14
push dword [esi + 8]
jmp 0x5274c8
test eax, eax
je 0x5274d2
push eax
push ebx
call fcn.00527717
pop ecx
pop ecx
jmp 0x5274f7
mov eax, dword [esi + 0x14]
test dword [eax + 4], 0x800
mov ecx, dword [eax + 0x10]
push ecx
je 0x5274e9
push str._join__u_
jmp 0x5274ee
push str._subquery__u_
push ebx
call fcn.0052648b
add esp, 0xc
xor esi, esi
push esi
push ebp
push ebx
call fcn.005276d9
add esp, 0xc
mov edx, dword [esp + 0x50]
test edx, edx
je 0x52751c
push edx
push dword [ebx]
call fcn.00560283
pop ecx
xor eax, eax
pop ecx
mov dword [esp + 0x50], eax
mov edi, dword [esp + 0x38]
mov esi, dword [esp + 0x20]
inc edi
movsx eax, byte [edi]
test eax, eax
jne 0x52650f
jmp case.default.0x526807
push 1
push 0x65a7ec
push ebx
call fcn.005276d9
add esp, 0xc
mov ecx, dword [esp + 0xd8]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0059d866
add esp, 0xcc
ret