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

Disassembly:
mov eax, 0x11c8
call fcn.00539600
mov eax, dword [0x634384]
xor eax, esp
mov dword [esp + 0x11c4], eax
mov edx, dword [esp + 0x11d8]
mov eax, dword [esp + 0x11cc]
mov ecx, dword [esp + 0x11d4]
push ebx
mov ebx, dword [esp + 0x11e0]
push ebp
push esi
push edi
or ebp, 0xffffffff
mov dword [esp + 0x1c], eax
or edi, 0xffffffff
mov dword [esp + 0x58], ecx
xor esi, esi
mov dword [esp + 0x54], edx
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x28], 1
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x10], edi
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], esi
mov dword [esp + 0x20], eax
test edx, edx
jne 0x5252d7
test ecx, ecx
je 0x52601b
mov dword [ecx], 0x63
jmp 0x52601b
mov dword [edx], esi
test ecx, ecx
je 0x5252df
mov dword [ecx], esi
test ebx, ebx
jne 0x5252ef
mov esi, 0x10
mov edx, esi
jmp 0x525fef
mov eax, dword [esp + 0x11f0]
mov ecx, 0x5c93d8
test eax, eax
mov dword [ebx], esi
mov ebx, dword [esp + 0x11e0]
cmovne ecx, eax
mov dword [esp + 0x40], ecx
mov dword [esp + 0x5c], ecx
lea eax, [ecx + 0x100]
mov dword [esp + 0x60], eax
lea eax, [ecx + 0x200]
mov dword [esp + 0x64], eax
lea eax, [ecx + 0x340]
mov dword [esp + 0x68], eax
test ebx, 0xd8008580
je 0x525341
mov esi, 0x11
jmp 0x525fd6
mov eax, dword [esp + 0x1c]
mov ecx, ebx
and ecx, 0x10000
mov dword [esp + 0xc0], esi
mov dword [esp + 0x44], ecx
cmp byte [eax], 0x28
jne 0x525690
mov ebp, eax
cmp byte [esi + ebp + 1], 0x2a
jne 0x525679
push 5
lea edi, [ebp + 2]
add edi, esi
push str.UTF8_
push edi
call fcn.00568dc0
add esp, 0xc
test eax, eax
jne 0x525395
add esi, 7
or ebx, 0x800
jmp 0x52565e
push 4
push str.UTF_
push edi
call fcn.00568dc0
add esp, 0xc
test eax, eax
jne 0x5253b7
add esi, 6
or ebx, 0x800
jmp 0x52565e
push 4
push str.UCP_
push edi
call fcn.00568dc0
add esp, 0xc
test eax, eax
jne 0x5253d9
add esi, 6
or ebx, 0x20000000
jmp 0x52565e
push 0x10
push str.NO_AUTO_POSSESS_
push edi
call fcn.00568dc0
add esp, 0xc
test eax, eax
jne 0x5253fb
add esi, 0x12
or ebx, 0x20000
jmp 0x52565e
push 0xd
push str.NO_START_OPT_
push edi
call fcn.00568dc0
add esp, 0xc
test eax, eax
jne 0x52541d
add esi, 0xf
or ebx, 0x4000000
jmp 0x52565e
push 0xc
push str.LIMIT_MATCH
push edi
call fcn.00568dc0
add esp, 0xc
test eax, eax
jne 0x5254bd
lea ebx, [esi + 0xe]
xor edi, edi
add ebp, ebx
movzx eax, byte [ebp]
push eax
call fcn.005684bd
add esp, 4
test eax, eax
je 0x52547f
mov esi, dword [esp + 0x1c]
cmp edi, 0x19999998
ja 0x52547b
movzx eax, byte [ebp]
lea ecx, [edi - 6]
inc ebx
lea ecx, [edi + ecx*4]
lea ebp, [esi + ebx]
lea edi, [eax + ecx*2]
movzx eax, byte [ebp]
push eax
call fcn.005684bd
add esp, 4
test eax, eax
jne 0x525451
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0x1c]
mov al, byte [eax + ebx]
cmp al, 0x29
jne 0x525679
mov eax, dword [esp + 0x2c]
cmp edi, eax
jae 0x5254a1
or dword [esp + 0xc0], 0x2000
mov ebp, dword [esp + 0x1c]
lea esi, [ebx + 1]
mov ebx, dword [esp + 0x11e0]
cmp edi, eax
cmovae edi, eax
mov dword [esp + 0x2c], edi
jmp 0x525665
push 0x10
push str.LIMIT_RECURSION
push edi
call fcn.00568dc0
add esp, 0xc
test eax, eax
jne 0x525558
lea ebx, [esi + 0x12]
xor edi, edi
add ebp, ebx
movzx eax, byte [ebp]
push eax
call fcn.005684bd
add esp, 4
test eax, eax
je 0x52551f
mov esi, dword [esp + 0x1c]
cmp edi, 0x19999998
ja 0x52551b
movzx eax, byte [ebp]
lea ecx, [edi - 6]
inc ebx
lea ecx, [edi + ecx*4]
lea ebp, [esi + ebx]
lea edi, [eax + ecx*2]
movzx eax, byte [ebp]
push eax
call fcn.005684bd
add esp, 4
test eax, eax
jne 0x5254f1
mov esi, dword [esp + 0x14]
mov ebp, dword [esp + 0x1c]
cmp byte [ebx + ebp], 0x29
jne 0x525679
mov eax, dword [esp + 0x10]
cmp edi, eax
jae 0x525540
or dword [esp + 0xc0], 0x4000
cmp edi, eax
lea esi, [ebx + 1]
mov ebx, dword [esp + 0x11e0]
cmovae edi, eax
mov dword [esp + 0x10], edi
jmp 0x525669
push 3
push 0x5c88ac
push edi
call fcn.00568dc0
add esp, 0xc
test eax, eax
jne 0x525581
mov eax, 0x100000
and ebx, 0xff8fffff
add esi, 5
or ebx, eax
jmp 0x52565e
push 3
push 0x5c88b0
push edi
call fcn.00568dc0
add esp, 0xc
test eax, eax
jne 0x5255aa
mov eax, 0x200000
and ebx, 0xff8fffff
add esi, 5
or ebx, eax
jmp 0x52565e
push 5
push str.CRLF_
push edi
call fcn.00568dc0
add esp, 0xc
test eax, eax
jne 0x5255d3
mov eax, 0x300000
and ebx, 0xff8fffff
add esi, 7
or ebx, eax
jmp 0x52565e
push 4
push str.ANY_
push edi
call fcn.00568dc0
add esp, 0xc
test eax, eax
jne 0x5255f9
mov eax, 0x400000
and ebx, 0xff8fffff
add esi, 6
or ebx, eax
jmp 0x52565e
push 8
push str.ANYCRLF_
push edi
call fcn.00568dc0
add esp, 0xc
test eax, eax
jne 0x52561f
mov eax, 0x500000
and ebx, 0xff8fffff
add esi, 0xa
or ebx, eax
jmp 0x52565e
push 0xc
push str.BSR_ANYCRLF_
push edi
call fcn.00568dc0
add esp, 0xc
test eax, eax
jne 0x52563a
mov eax, 0x800000
jmp 0x525653
push 0xc
push str.BSR_UNICODE_
push edi
call fcn.00568dc0
add esp, 0xc
test eax, eax
jne 0x525679
mov eax, 0x1000000
and ebx, 0xfe7fffff
or ebx, eax
add esi, 0xe
mov dword [esp + 0x11e0], ebx
mov edi, dword [esp + 0x10]
cmp byte [esi + ebp], 0x28
mov dword [esp + 0x14], esi
je 0x525363
jmp 0x52567d
mov edi, dword [esp + 0x10]
mov ebx, dword [esp + 0x11e0]
mov ebp, dword [esp + 0x2c]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x44]
mov edx, ebx
shr edx, 0xb
and edx, 1
mov dword [esp + 0x30], edx
je 0x5256d9
test ecx, ecx
je 0x5256ae
mov esi, 0x4e
mov edx, esi
jmp 0x525fef
test ebx, 0x2000
jne 0x5256d9
push dword [esp + 0x4c]
push 0xffffffffffffffff
push eax
call fcn.00535a10
add esp, 0xc
mov dword [esp + 0x18], eax
test eax, eax
je 0x5256d9
mov esi, 0x2c
mov edx, esi
jmp 0x525fef
mov eax, ebx
and eax, 0x1800000
cmp eax, 0x1800000
je 0x525fd1
mov eax, ebx
and eax, 0x700000
cmp eax, 0x300000
ja 0x52575e
je 0x52573c
test eax, eax
je 0x525711
cmp eax, 0x100000
je 0x525735
cmp eax, 0x200000
jne 0x525fd1
mov eax, 0xa
mov dword [esp + 0xd8], 0
mov dword [esp + 0xdc], 1
mov byte [esp + 0xe0], al
jmp 0x525788
mov eax, 0xd
jmp 0x525716
mov dword [esp + 0xd8], 0
mov dword [esp + 0xdc], 2
mov word [esp + 0xe0], 0xa0d
jmp 0x525788
cmp eax, 0x400000
je 0x52577d
cmp eax, 0x500000
jne 0x525fd1
mov dword [esp + 0xd8], 2
jmp 0x525788
mov dword [esp + 0xd8], 1
lea eax, [esp + 0x1d4]
mov dword [esp + 0xa8], 0
mov dword [esp + 0x70], eax
mov dword [esp + 0x7c], eax
mov dword [esp + 0x6c], eax
lea eax, [esp + 0xe4]
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x1c]
mov ecx, eax
mov dword [esp + 0xac], 0
mov dword [esp + 0xa0], 0
mov dword [esp + 0x9c], 0
mov dword [esp + 0x8c], 0
lea edx, [ecx + 1]
mov dword [esp + 0x90], 0
mov dword [esp + 0x88], 0
mov dword [esp + 0xd4], 0
mov dword [esp + 0xb0], 0
mov dword [esp + 0x98], 0x1000
mov dword [esp + 0x94], 0x14
mov dword [esp + 0x74], eax
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x525830
sub ecx, edx
mov dword [esp + 0xc4], 0
mov edx, dword [esp + 0x1c]
mov dword [esp + 0xb4], 0
mov dword [esp + 0xb8], 0
mov dword [esp + 0xa4], 0
lea eax, [ecx + edx]
mov dword [esp + 0xbc], ebx
mov dword [esp + 0x78], eax
lea eax, [edx + esi]
mov dword [esp + 0x48], eax
mov dword [esp + 0x20], eax
lea eax, [esp + 0x1d4]
mov dword [esp + 0x24], eax
lea eax, [esp + 0x28]
push eax
lea eax, [esp + 0x60]
mov dword [esp + 0x84], 0
push eax
push 0
lea eax, [esp + 0x40]
mov byte [esp + 0x1e0], 0x83
push eax
lea eax, [esp + 0x48]
push eax
lea eax, [esp + 0x40]
push eax
lea eax, [esp + 0x5c]
push eax
push 0
push 0
push 0
push 0
lea eax, [esp + 0x44]
push eax
lea eax, [esp + 0x50]
push eax
lea eax, [esp + 0x58]
push eax
push ebx
call fcn.00523810
mov esi, dword [esp + 0x54]
add esp, 0x3c
test esi, esi
jne 0x525fd6
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x3c], ecx
cmp ecx, 0x10000
jle 0x525906
mov esi, 0x14
jmp 0x525fd6
cmp dword [esp + 0xd4], 0
je 0x525922
mov eax, dword [esp + 0xb0]
test eax, eax
je 0x525922
lea ecx, [ecx + eax*2]
mov dword [esp + 0x3c], ecx
mov esi, dword [esp + 0x90]
imul esi, dword [esp + 0x8c]
add esi, 0x38
add esi, ecx
push esi
call dword [0x634300]
mov edx, eax
add esp, 4
mov dword [esp + 0x14], edx
test edx, edx
jne 0x525952
lea esi, [eax + 0x15]
jmp 0x525fd6
mov dword [edx], 0x50435245
xor ecx, ecx
mov dword [edx + 4], esi
mov eax, dword [esp + 0xbc]
mov dword [edx + 8], eax
mov eax, dword [esp + 0xc0]
mov dword [edx + 0xc], eax
xor eax, eax
mov dword [edx + 0x18], eax
mov eax, 0x38
mov word [edx + 0x22], ax
mov dword [edx + 0x14], edi
mov dword [edx + 0x10], ebp
movzx eax, word [esp + 0x90]
mov word [edx + 0x24], ax
movzx eax, word [esp + 0x8c]
mov word [edx + 0x26], ax
xor eax, eax
mov dword [edx + 0x28], eax
mov eax, dword [esp + 0x40]
cmp eax, 0x5c93d8
mov dword [edx + 0x34], ecx
cmove eax, ecx
mov dword [edx + 0x30], eax
xor eax, eax
mov dword [edx + 0x2c], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 0xa0], eax
mov dword [esp + 0xb4], ecx
mov dword [esp + 0xb8], ecx
mov dword [esp + 0x9c], ecx
mov dword [esp + 0xa4], ecx
movzx edi, word [edx + 0x22]
add edi, edx
mov dword [esp + 0x88], edi
movzx ecx, word [edx + 0x24]
movzx eax, word [edx + 0x26]
imul eax, ecx
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0xc4], 0
mov dword [esp + 0xc8], 0
mov dword [esp + 0xcc], 0
add eax, edi
mov dword [esp + 0xd0], 0
mov dword [esp + 0x10], eax
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x7c], eax
mov dword [esp + 0x80], 0
mov dword [esp + 0x24], ecx
test ecx, ecx
jle 0x525bb8
xor eax, eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x8c], eax
test ecx, ecx
jle 0x525b9e
mov eax, dword [esp + 0x84]
xor ecx, ecx
mov ebx, dword [esp + 0x24]
add eax, 4
mov dword [esp + 0x40], eax
mov edx, dword [eax + 4]
xor ebp, ebp
mov esi, dword [eax]
mov dword [esp + 0x50], edx
mov edx, dword [eax - 4]
mov dword [esp + 0x24], esi
mov dword [esp + 0x20], edx
test ecx, ecx
jle 0x525b2c
mov edi, edi
lea eax, [edi + 2]
sub esi, 4
jb 0x525ab9
mov ecx, dword [edx]
cmp ecx, dword [eax]
jne 0x525abe
add edx, 4
add eax, 4
sub esi, 4
jae 0x525aa8
cmp esi, 0xfffffffc
je 0x525af2
mov cl, byte [edx]
cmp cl, byte [eax]
jne 0x525aeb
cmp esi, 0xfffffffd
je 0x525af2
mov cl, byte [edx + 1]
cmp cl, byte [eax + 1]
jne 0x525aeb
cmp esi, 0xfffffffe
je 0x525af2
mov cl, byte [edx + 2]
cmp cl, byte [eax + 2]
jne 0x525aeb
cmp esi, 0xffffffff
je 0x525af2
mov cl, byte [edx + 3]
cmp cl, byte [eax + 3]
je 0x525af2
sbb eax, eax
or eax, 1
jmp 0x525af4
xor eax, eax
mov esi, dword [esp + 0x24]
test eax, eax
jne 0x525b7e
cmp byte [edi + esi + 2], al
je 0x525b80
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x90]
sub eax, ebp
imul eax, ecx
push eax
lea eax, [ecx + edi]
push edi
push eax
call fcn.00551a50
mov edx, dword [esp + 0x2c]
add esp, 0xc
mov ecx, dword [esp + 0x50]
mov eax, ecx
shr eax, 8
push esi
mov byte [edi], al
lea eax, [edi + 2]
push edx
push eax
mov byte [edi + 1], cl
call fcn.005514d0
mov eax, dword [esp + 0x4c]
dec ebx
mov byte [edi + esi + 2], 0
add eax, 0xc
mov edx, dword [esp + 0x98]
add esp, 0xc
inc edx
mov dword [esp + 0x40], eax
mov dword [esp + 0x28], edx
mov ecx, edx
mov dword [esp + 0x8c], edx
test ebx, ebx
jle 0x525b97
mov edi, dword [esp + 0x88]
jmp 0x525a80
js 0x525b0a
add edi, dword [esp + 0x90]
inc ebp
mov edx, dword [esp + 0x20]
cmp ebp, dword [esp + 0x28]
jge 0x525b2c
jmp 0x525aa0
mov ebx, dword [esp + 0x11e0]
cmp dword [esp + 0x94], 0x14
jle 0x525bb8
push dword [esp + 0x84]
call dword [0x634304]
add esp, 4
mov eax, dword [esp + 0x48]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x10]
push 0
mov dword [esp + 0x28], eax
mov esi, dword [esp + 0x18]
mov byte [eax], 0x83
lea eax, [esp + 0x60]
push eax
push 0
lea eax, [esp + 0x40]
push eax
lea eax, [esp + 0x48]
push eax
lea eax, [esp + 0x40]
push eax
lea eax, [esp + 0x5c]
push eax
push 0
push 0
push 0
push 0
lea eax, [esp + 0x44]
push eax
lea eax, [esp + 0x50]
push eax
lea eax, [esp + 0x58]
push eax
push dword [esi + 8]
call fcn.00523810
movzx eax, word [esp + 0xd8]
add esp, 0x3c
mov word [esi + 0x1e], ax
movzx eax, word [esp + 0xa8]
mov word [esi + 0x20], ax
movzx eax, word [esp + 0xa4]
mov word [esi + 0x1c], ax
mov eax, dword [esp + 0xc0]
or eax, 1
mov dword [esi + 0xc], eax
cmp dword [esp + 0xc8], 0
je 0x525c5a
or eax, 0xffffffff
mov dword [esp + 0x38], 0
mov dword [esp + 0x34], eax
jmp 0x525c6a
mov eax, dword [esp + 0x34]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x38], eax
mov ecx, dword [esp + 0x18]
test ecx, ecx
jne 0x525c84
mov eax, dword [esp + 0x20]
mov edx, 0x16
cmp byte [eax], cl
cmovne ecx, edx
mov dword [esp + 0x18], ecx
mov ebp, dword [esp + 0x24]
mov ecx, 0x17
mov byte [ebp], 0
inc ebp
mov esi, dword [esp + 0x18]
mov eax, ebp
sub eax, dword [esp + 0x10]
cmp eax, dword [esp + 0x3c]
mov eax, dword [esp + 0x7c]
mov edi, dword [esp + 0x6c]
cmovg esi, ecx
mov dword [esp + 0x28], ebp
mov dword [esp + 0x18], esi
cmp eax, edi
jbe 0x525d5d
or ecx, 0xffffffff
xor edx, edx
mov dword [esp + 0x3c], ecx
test esi, esi
jne 0x525d5d
lea esp, [esp]
cmp eax, edi
jbe 0x525d59
sub eax, 2
mov dword [esp + 0x7c], eax
movzx ecx, byte [eax]
movzx eax, byte [eax + 1]
shl ecx, 8
or ecx, eax
mov eax, dword [esp + 0x10]
movzx esi, byte [ecx + eax]
lea ebp, [ecx + eax]
inc eax
shl esi, 8
add eax, ecx
mov dword [esp + 0x48], eax
movzx eax, byte [eax]
or esi, eax
cmp esi, dword [esp + 0x3c]
je 0x525d22
push esi
push dword [esp + 0x34]
push dword [esp + 0x18]
call fcn.0051cf40
add esp, 0xc
mov dword [esp + 0x3c], esi
mov edx, eax
test edx, edx
je 0x525d50
mov ecx, edx
mov al, dl
sub ecx, dword [esp + 0x10]
sub al, byte [esp + 0x10]
sar ecx, 8
mov byte [ebp], cl
mov ecx, dword [esp + 0x48]
mov byte [ecx], al
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x6c]
test esi, esi
jne 0x525d59
mov eax, dword [esp + 0x7c]
jmp 0x525cd0
mov esi, 0x35
mov dword [esp + 0x18], esi
mov ebp, dword [esp + 0x28]
cmp dword [esp + 0x98], 0x1000
jle 0x525d78
push edi
call dword [0x634304]
mov esi, dword [esp + 0x1c]
add esp, 4
mov dword [esp + 0x6c], 0
test esi, esi
jne 0x525d9c
mov ecx, dword [esp + 0x14]
mov edx, 0xf
mov ax, word [ecx + 0x20]
cmp ax, word [ecx + 0x1e]
cmova esi, edx
mov dword [esp + 0x18], esi
mov edi, dword [esp + 0x30]
test ebx, 0x20000
mov ebx, dword [esp + 0x10]
jne 0x525dbf
lea eax, [esp + 0x5c]
push eax
push edi
push ebx
call fcn.0051d950
mov esi, dword [esp + 0x24]
add esp, 0xc
cmp dword [esp + 0xd0], 0
je 0x525e67
push 0xffffffffffffffff
push edi
push ebx
call fcn.0051cf40
mov edi, eax
add esp, 0xc
test edi, edi
je 0x525e67
movzx ecx, byte [edi + 1]
movzx eax, byte [edi + 2]
shl ecx, 8
or ecx, eax
jne 0x525e4b
movzx esi, byte [edi - 2]
movzx eax, byte [edi - 1]
shl esi, 8
or esi, eax
lea eax, [esp + 0x5c]
push eax
mov eax, dword [esp + 0x18]
push 1
mov bl, byte [esi + edi - 3]
mov byte [esi + edi - 3], cl
mov eax, dword [eax + 8]
shr eax, 0xb
and eax, 1
push eax
push edi
call fcn.00524390
mov edx, eax
mov byte [esi + edi - 3], bl
add esp, 0x10
test edx, edx
js 0x525e81
mov ecx, dword [esp + 0xa4]
cmp edx, ecx
cmovg ecx, edx
sar eax, 8
mov dword [esp + 0xa4], ecx
mov byte [edi + 1], al
mov byte [edi + 2], dl
push 0xffffffffffffffff
push dword [esp + 0x34]
lea eax, [edi + 3]
push eax
call fcn.0051cf40
mov edi, eax
add esp, 0xc
test edi, edi
jne 0x525de3
mov esi, dword [esp + 0x18]
test esi, esi
je 0x525eba
push dword [esp + 0x14]
call dword [0x634304]
mov esi, dword [esp + 0x1c]
add esp, 4
jmp 0x525fd6
cmp edx, 0xfffffffe
jne 0x525ea4
push dword [esp + 0x14]
mov dword [esp + 0x1c], 0x24
call dword [0x634304]
mov esi, dword [esp + 0x1c]
add esp, 4
jmp 0x525fd6
cmp edx, 0xfffffffc
mov esi, 0x19
mov eax, 0x46
cmove esi, eax
mov dword [esp + 0x18], esi
jmp 0x525e67
mov esi, dword [esp + 0x14]
mov ebx, dword [esi + 8]
test bl, 0x10
jne 0x525f56
push 0
lea eax, [esp + 0x60]
push eax
push 0
push dword [esp + 0x1c]
call fcn.00524ef0
add esp, 0x10
test eax, eax
je 0x525eeb
or ebx, 0x10
mov dword [esi + 8], ebx
jmp 0x525f56
mov eax, dword [esp + 0x2c]
test eax, eax
jns 0x525f30
mov ebx, dword [esp + 0x10]
lea eax, [esp + 0x2c]
push 0
push eax
push ebx
call fcn.00524200
mov ecx, eax
add esp, 0xc
mov eax, dword [esp + 0x2c]
test eax, eax
jns 0x525f34
push 0
lea eax, [esp + 0x60]
push eax
push 0
push ebx
call fcn.005250a0
add esp, 0x10
test eax, eax
je 0x525f56
or dword [esi + 0xc], 0x100
jmp 0x525f56
mov ecx, dword [esp + 0x44]
movzx edx, cl
mov word [esi + 0x18], dx
test al, 1
je 0x525f52
mov eax, dword [esp + 0x60]
mov ecx, edx
movzx eax, byte [ecx + eax]
cmp ax, dx
je 0x525f52
or dword [esi + 0xc], 0x20
or dword [esi + 0xc], 0x10
mov eax, dword [esp + 0x34]
test eax, eax
js 0x525f91
test byte [esi + 8], 0x10
je 0x525f68
test al, 2
je 0x525f91
mov ecx, dword [esp + 0x38]
movzx edx, cl
mov word [esi + 0x1a], dx
test al, 1
je 0x525f8d
mov eax, dword [esp + 0x60]
mov ecx, edx
movzx eax, byte [ecx + eax]
cmp ax, dx
je 0x525f8d
or dword [esi + 0xc], 0x80
or dword [esi + 0xc], 0x40
mov ebx, dword [esp + 0x10]
push 0
lea eax, [esp + 0x60]
push eax
push dword [esp + 0x38]
push ebp
push ebx
call fcn.00523d10
add esp, 0x14
test eax, eax
jne 0x525fc6
movzx ecx, byte [ebx + 1]
movzx eax, byte [ebx + 2]
shl ecx, 8
or ecx, eax
add ebx, ecx
cmp byte [ebx], 0x77
je 0x525f95
mov eax, esi
jmp 0x52601d
or dword [esi + 0xc], 0x8000
mov eax, esi
jmp 0x52601d
mov esi, 0x38
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x20]
sub eax, dword [esp + 0x1c]
mov dword [ecx], eax
mov edx, esi
mov ecx, str.no_error
test edx, edx
jle 0x52600b
mov ecx, str.no_error
mov al, byte [ecx]
inc ecx
test al, al
jne 0x525ff4
cmp byte [ecx], al
je 0x526006
dec edx
test edx, edx
jg 0x525ff4
jmp 0x52600b
mov ecx, str.Error_text_not_found__please_report_
mov eax, dword [esp + 0x54]
mov dword [eax], ecx
mov eax, dword [esp + 0x58]
test eax, eax
je 0x52601b
mov dword [eax], esi
xor eax, eax
mov ecx, dword [esp + 0x11d4]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.005395e6
add esp, 0x11c8
ret