Function at 0x10621a0
Capabilities:
Encode data using xor

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x50
mov eax, dword [ebp + 0x10]
xor ecx, ecx
push ebx
push esi
mov esi, dword [ebp + 8]
cmp dword [esi + 4], 0x20
mov edx, dword [esi + 0x10]
push edi
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x18], ecx
mov dword [ebp - 4], ecx
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x44], ecx
mov dword [ebp - 0x40], ecx
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0xc], 1
mov dword [ebp - 0x14], ecx
mov dword [esi + 0xd4], eax
mov dword [ebp - 0x10], edx
je 0x1062249
movzx eax, word [edi + 0x5c]
cmp eax, 9
ja case.0x10621f3.0
jmp dword [eax*4 + 0x1062f50]
mov dword [esi + 4], 0x26
jmp 0x1062250
mov dword [esi + 4], 0x21
mov dword [ebp - 0xc], 3
jmp 0x1062250
mov dword [esi + 4], 0x22
jmp 0x1062250
mov dword [esi + 4], 0x23
jmp 0x1062250
mov dword [esi + 4], 0x25
jmp 0x1062250
mov dword [esi + 4], 0x1c
jmp 0x1062250
mov dword [esi + 4], 0x2b
jmp 0x1062250
mov dword [esi + 4], 0x2c
jmp 0x1062250
mov dword [ebp - 0xc], 2
mov ebx, dword [esi + 0x14]
mov eax, dword [edi + 0x2c]
lea edx, [ebx - 0x40]
mov dword [esi + 0xb0], eax
cmp eax, edx
jbe 0x1062272
mov eax, 0xaaaaaaab
mul ebx
shr edx, 1
mov dword [esi + 0xb0], edx
mov eax, dword [edi + 0x28]
mov dword [ebp + 0xc], eax
cmp eax, ecx
jne 0x10622ab
cmp dword [ebp - 0xc], 2
jne 0x106228a
mov eax, dword [edi + 0x2c]
mov dword [ebp + 0xc], eax
jmp 0x10622ab
mov edx, dword [ebp - 0x10]
mov eax, dword [esi + 0xe8]
lea ecx, [esi + 8]
push ecx
mov ecx, dword [eax + 0x2715c]
push ebx
push edx
push ecx
call fcn.01022a90
mov edx, dword [edi + 0x2c]
mov dword [ebp + 0xc], edx
mov eax, dword [esi + 0x10]
cmp dword [eax + 0x20], 0x5a584653
je 0x106292a
movzx ecx, word [edi + 6]
mov edx, dword [edi + 0x34]
mov eax, dword [esi + 0xac]
mov ebx, dword [esi + 0x14]
xor eax, ebx
xor eax, edx
xor eax, ecx
mov dword [esi + 0xac], eax
mov dword [esi + 0x28], edx
mov edx, dword [edi + 0x2c]
xor edx, eax
mov dword [esi + 0xac], edx
mov eax, dword [edi + 0x30]
xor eax, edx
lea edx, [ecx + ecx*4]
mov dword [esi + 0xac], eax
lea eax, [edx*8 + 0xf8]
mov dword [ebp - 0x34], ecx
cmp eax, ebx
ja 0x106274c
add edi, 0xf8
mov dword [ebp - 8], 0
mov dword [ebp - 0x2c], edi
test ecx, ecx
jbe 0x10626c9
lea ecx, [ecx]
mov eax, dword [ebp - 0x34]
dec eax
cmp dword [ebp - 8], eax
jne 0x106233f
mov ecx, dword [edi + 0x14]
mov eax, dword [edi + 8]
mov dword [ebp - 0x3c], ecx
mov ecx, dword [edi + 0x10]
mov dword [ebp - 0x1c], ecx
cmp ecx, eax
jbe 0x106233f
mov dword [ebp - 0x1c], eax
or eax, 0xffffffff
cmp dword [edi + 0x14], eax
je 0x1062e70
cmp dword [edi + 0x24], eax
je 0x1062e70
mov edx, dword [edi + 0x10]
cmp edx, dword [esi + 0x14]
ja 0x106274c
push 4
push 0x100d4f8
push edi
call dword [sym.imp.msvcrt.dll_strncmp]
add esp, 0xc
test eax, eax
je 0x106292a
push 8
push edi
call fcn.010227c0
movzx eax, ax
xor dword [esi + 0xac], eax
mov ecx, dword [esi + 0xac]
mov eax, dword [edi + 0x24]
xor eax, ecx
mov dword [esi + 0xac], eax
mov ecx, dword [edi + 0x14]
xor ecx, eax
mov dword [esi + 0xac], ecx
mov eax, dword [edi + 0x10]
xor eax, ecx
mov dword [esi + 0xac], eax
mov ebx, dword [edi + 8]
xor ebx, eax
mov dword [esi + 0xac], ebx
mov eax, dword [edi + 0x10]
test eax, eax
jl 0x106240f
mov ecx, dword [edi + 0x14]
test ecx, ecx
jl 0x106240f
lea edx, [eax + ecx]
cmp edx, dword [esi + 0x14]
ja 0x106240f
test edx, edx
jbe 0x106240f
mov edx, dword [esi + 0x10]
push eax
add edx, ecx
push edx
call fcn.01025eb0
fnstcw word [ebp + 0xa]
movzx eax, word [ebp + 0xa]
mov ecx, dword [ebp - 8]
or eax, 0xc00
mov dword [ebp + 0x10], eax
inc ecx
fldcw word [ebp + 0x10]
fistp qword [ebp - 0x24]
mov eax, dword [ebp - 0x24]
fldcw word [ebp + 0xa]
imul eax, ecx
shl eax, 0xd
xor eax, ebx
mov dword [esi + 0xac], eax
test dword [edi + 0x24], 0x20000000
je 0x1062421
cmp dword [esi + 0x38], 0
jne 0x1062421
mov dword [esi + 0x38], edi
cmp dword [ebp - 4], 0
jne 0x1062574
mov eax, dword [edi + 0x14]
mov dword [ebp - 4], eax
cmp dword [ebp + 0xc], eax
jae 0x1062574
mov edx, dword [esi + 0x14]
sub edx, 0x20
cmp dword [ebp + 0xc], edx
jae 0x1062574
mov ecx, dword [esi + 0x10]
add ecx, dword [ebp + 0xc]
mov eax, dword [esi + 0xe8]
mov eax, dword [eax + 0x2715c]
mov bl, byte [ecx]
xor edx, edx
mov dword [ebp + 0x10], edx
cmp bl, byte [edx + ecx]
jne 0x10624ba
inc edx
cmp edx, 8
jl 0x1062462
lea edx, [ecx + 1]
mov dword [ebp - 0x20], 8
jmp 0x1062482
mov bl, byte [ecx]
cmp bl, byte [edx - 1]
je 0x106248c
inc dword [ebp + 0x10]
mov bl, byte [ecx]
cmp bl, byte [edx]
je 0x1062495
inc dword [ebp + 0x10]
mov bl, byte [ecx]
cmp bl, byte [edx + 1]
je 0x106249f
inc dword [ebp + 0x10]
mov bl, byte [ecx]
cmp bl, byte [edx + 2]
je 0x10624a7
inc dword [ebp + 0x10]
add edx, 4
sub dword [ebp - 0x20], 1
jne 0x1062480
cmp dword [ebp + 0x10], 2
jl 0x1062574
mov dword [ebp + 8], 8
mov edx, dword [esi + 0xc]
movzx ebx, byte [ecx]
mov edi, dword [esi + 8]
mov dword [ebp - 0x4c], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x4c]
shld ebx, edi, 8
xor ebx, dword [eax + edx*8 + 4]
shl edi, 8
xor edi, dword [eax + edx*8]
mov dword [esi + 0xc], ebx
mov edx, ebx
mov dword [esi + 8], edi
movzx ebx, byte [ecx + 1]
mov dword [ebp - 0x4c], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x4c]
shld ebx, edi, 8
xor ebx, dword [eax + edx*8 + 4]
shl edi, 8
xor edi, dword [eax + edx*8]
mov edx, ebx
mov dword [esi + 0xc], ebx
mov dword [ebp - 0x4c], edx
mov dword [esi + 8], edi
movzx ebx, byte [ecx + 2]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x4c]
shld ebx, edi, 8
xor ebx, dword [eax + edx*8 + 4]
shl edi, 8
xor edi, dword [eax + edx*8]
mov edx, ebx
mov dword [esi + 0xc], ebx
mov dword [ebp - 0x4c], edx
mov dword [esi + 8], edi
movzx ebx, byte [ecx + 3]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x4c]
shld ebx, edi, 8
xor ebx, dword [eax + edx*8 + 4]
shl edi, 8
xor edi, dword [eax + edx*8]
add ecx, 4
sub dword [ebp + 8], 1
mov dword [esi + 8], edi
mov dword [esi + 0xc], ebx
jne 0x10624c1
mov edi, dword [ebp - 0x2c]
mov eax, dword [esi + 0x14]
mov edx, dword [ebp - 4]
lea ecx, [eax - 0x20]
cmp edx, ecx
jae 0x10625a5
mov ecx, dword [esi + 0x10]
add ecx, edx
mov ebx, 0x54584557
cmp dword [ecx], ebx
je 0x1062739
cmp dword [ecx + 4], ebx
je 0x1062739
cmp dword [ecx + 8], ebx
je 0x1062739
mov ecx, dword [edi + 0x10]
add edx, ecx
cmp dword [ebp - 0x28], 0
mov dword [ebp - 4], edx
jne 0x10626b3
mov ebx, dword [edi + 0xc]
mov edx, dword [ebp + 0xc]
cmp ebx, edx
ja 0x10626b3
add ecx, ebx
cmp ecx, edx
jbe 0x10626b3
mov edx, dword [edi + 0x14]
mov ecx, edx
sub ecx, ebx
add ecx, dword [ebp + 0xc]
lea ebx, [eax - 0x10]
mov dword [ebp - 0x28], 1
mov dword [ebp - 0x18], ecx
cmp ecx, ebx
ja 0x106274c
mov ecx, dword [edi + 0x10]
mov dword [esi + 0x1c], ecx
mov dword [ebp - 0x44], ecx
mov ecx, dword [ebp - 0x18]
mov dword [esi + 0x2c], ecx
mov ebx, dword [edi + 8]
sub eax, ecx
mov dword [ebp - 0x40], edx
mov dword [esi + 0x30], ebx
mov dword [esi + 0xdc], edx
cmp eax, 0x3c
jbe 0x10626b3
push 0x64
lea eax, [esi + 0x48]
push 0
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
xor ebx, ebx
lea esp, [esp]
mov edx, dword [ebp - 0x10]
mov ecx, dword [esi + 0x2c]
lea eax, [ebx + edx]
add ecx, eax
mov al, byte [ecx]
cmp al, 0x20
jbe 0x1062653
cmp al, 0x7e
ja 0x1062653
push 1
push ecx
lea eax, [esi + 0x48]
push eax
call fcn.0101d030
jmp 0x1062677
movzx edx, al
push edx
push 0x100d4f0
lea eax, [ebp - 0x48]
push 3
push eax
call fcn.0101d440
add esp, 0x10
lea ecx, [ebp - 0x48]
push ecx
lea eax, [esi + 0x48]
push eax
call fcn.0101d060
inc ebx
cmp ebx, 8
jb 0x1062630
mov ebx, dword [esi + 0x2c]
cmp ebx, dword [esi + 0x14]
jae 0x10626b3
mov edx, dword [ebp - 0x10]
mov cl, byte [ebx + edx]
lea eax, [ebx + edx]
cmp cl, 0x20
jbe 0x10626ad
cmp cl, 0x7e
ja 0x10626ad
inc dword [ebp - 0x14]
push 1
push eax
lea eax, [esi + 0x48]
push eax
call fcn.0101d030
cmp dword [ebp - 0x14], 0x3c
je 0x10626b3
inc ebx
cmp ebx, dword [esi + 0x14]
jb 0x1062685
mov eax, dword [ebp - 8]
inc eax
add edi, 0x28
mov dword [ebp - 8], eax
mov dword [ebp - 0x2c], edi
cmp eax, dword [ebp - 0x34]
jb 0x1062320
mov eax, dword [esi + 0x14]
mov ebx, dword [ebp - 4]
cmp ebx, eax
ja 0x1062e70
add eax, 0xfffffff0
cmp ebx, eax
jae 0x1062e70
mov edi, dword [esi + 0x10]
add edi, ebx
mov edx, 0x5746
mov dword [esi + 0x44], ebx
mov dword [ebp + 0x10], edi
cmp word [edi], dx
je 0x1062f24
push 4
lea eax, [edi + 8]
push 0x100d4e8
push eax
call dword [sym.imp.msvcrt.dll_strncmp]
add esp, 0xc
test eax, eax
je 0x1062f24
mov eax, dword [edi]
cmp eax, 0x3031424e
je 0x1062e70
mov ecx, 0x5a4d
cmp ax, cx
je 0x106293d
cmp eax, 0x4643534d
jne 0x1062778
pop edi
mov eax, 0x2e
pop esi
add eax, 0x10000000
pop ebx
mov esp, ebp
pop ebp
ret 0xc
mov ecx, dword [esi + 0x14]
mov edx, dword [esi + 0x10]
lea eax, [esi + 8]
push eax
mov eax, dword [esi + 0xe8]
push ecx
mov ecx, dword [eax + 0x2715c]
push edx
push ecx
call fcn.01022e00
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret 0xc
cmp eax, 0x21726152
je 0x10627a1
cmp eax, 0x6d2a2a2a
jne 0x10627b4
mov edx, dword [esi + 0x14]
push 4
push 0x100d4e0
sub edx, ebx
push edx
push edi
call fcn.0101c180
test eax, eax
je 0x106292a
pop edi
mov eax, 0x2f
pop esi
add eax, 0x10000000
pop ebx
mov esp, ebp
pop ebp
ret 0xc
mov edi, dword [esi + 0x14]
mov eax, edi
sub eax, ebx
cmp eax, 0x2000
jb 0x10628f1
cmp eax, 0x100000
ja 0x10628f1
mov ebx, dword [ebp + 0x10]
push 4
push 0x100d4d8
push pe_nt_image_headers32
push ebx
call fcn.0101c180
test eax, eax
jne 0x10627fc
push 4
push 0x100d4d0
push pe_nt_image_headers32
push ebx
call fcn.0101c180
sub eax, dword [esi + 0x10]
cmp eax, 0x14
jbe 0x106280c
cmp eax, edi
jb 0x106293d
xor eax, eax
push 4
mov dword [ebp - 0x34], eax
mov byte [ebp - 0x30], al
push ebx
lea eax, [ebp - 0x34]
push eax
call fcn.0101c040
mov al, byte [ebp - 0x34]
test al, al
je 0x10628f1
mov bl, byte [ebp - 0x33]
test bl, bl
je 0x10628f1
mov dl, byte [ebp - 0x32]
test dl, dl
je 0x10628f1
mov cl, byte [ebp - 0x31]
test cl, cl
je 0x10628f1
cmp al, bl
je 0x10628f1
cmp dl, cl
je 0x10628f1
mov eax, dword [ebp + 0x10]
mov ecx, dword [esi + 0x10]
mov edi, eax
sub eax, ecx
mov ebx, dword [esi + 0x14]
sub ebx, eax
mov eax, 0x80
cmp ebx, 0x80
ja 0x106287a
mov eax, ebx
push 4
push 0x100d4d8
push eax
push edi
call fcn.0101c180
test eax, eax
jne 0x106293d
cmp ebx, 0x80
jbe 0x106289d
mov ebx, 0x80
push 4
push 0x100d4d0
push ebx
push edi
call fcn.0101c180
test eax, eax
jne 0x106293d
mov ecx, dword [ebp - 0x38]
mov eax, edi
sub eax, dword [esi + 0x10]
inc ecx
mov dword [ebp - 0x38], ecx
cmp ecx, 0x14
ja 0x10628f1
mov ecx, dword [esi + 0x14]
sub ecx, eax
cmp ecx, 0x400
jb 0x10628f1
push 4
lea edx, [ebp - 0x34]
push edx
add ecx, 0xfffffff0
push ecx
add edi, 0x10
push edi
call fcn.0101c180
mov edi, eax
sub eax, dword [esi + 0x10]
test edi, edi
jne 0x1062866
mov edi, dword [esi + 0x14]
sub edi, dword [ebp - 4]
mov dword [ebp - 8], edi
cmp edi, 0x200
jbe 0x1062e70
mov eax, edi
cmp edi, 0x400
jb 0x1062915
mov eax, 0x400
mov ebx, dword [ebp + 0x10]
push 4
push 0x100d4c8
push eax
push ebx
call fcn.0101c180
test eax, eax
je 0x1062950
pop edi
mov eax, 0x30
pop esi
add eax, 0x10000000
pop ebx
mov esp, ebp
pop ebp
ret 0xc
pop edi
mov eax, 0x33
pop esi
add eax, 0x10000000
pop ebx
mov esp, ebp
pop ebp
ret 0xc
mov eax, edi
mov dword [ebp + 8], eax
fild dword [ebp + 8]
test eax, eax
jge 0x1062962
fadd qword [0x1009c68]
mov ecx, dword [ebp - 4]
fild dword [ebp - 4]
test ecx, ecx
jge 0x1062972
fadd qword [0x1009c68]
fdiv qword [0x1009ec0]
fcompp
fnstsw ax
test ah, 5
jnp 0x10629af
cmp edi, 0x8000
jbe 0x1062e70
push 0x400
lea edx, [ebx + 0x400]
push edx
call fcn.01025eb0
fcomp qword [0x100d4c0]
fnstsw ax
test ah, 0x41
jne 0x1062e70
mov eax, 0xaaaaaaab
mul edi
shr edx, 2
push 0x200
add edx, ebx
push edx
call fcn.01025eb0
fcomp qword [0x1009c60]
fnstsw ax
test ah, 0x41
jne 0x1062e70
cmp edi, 0x800
jbe 0x10629e9
shr edi, 0xa
dec edi
shl edi, 0xa
mov dword [ebp - 8], edi
mov eax, 0xaaaaaaab
mul edi
mov eax, dword [esi + 0xe8]
mov eax, dword [eax + 0x2715c]
shr edx, 2
mov cl, byte [edx + ebx]
add edx, ebx
xor edi, edi
mov dword [ebp + 8], edi
lea esp, [esp]
cmp cl, byte [edi + edx]
jne 0x1062a57
inc edi
cmp edi, 0x10
jl 0x1062a10
lea edi, [edx + 1]
mov dword [ebp - 0x38], 0x10
cmp cl, byte [edi - 1]
je 0x1062a2d
inc dword [ebp + 8]
cmp cl, byte [edi]
je 0x1062a34
inc dword [ebp + 8]
cmp cl, byte [edi + 1]
je 0x1062a3c
inc dword [ebp + 8]
cmp cl, byte [edi + 2]
je 0x1062a44
inc dword [ebp + 8]
add edi, 4
sub dword [ebp - 0x38], 1
jne 0x1062a25
cmp dword [ebp + 8], 4
jl 0x1062b10
mov dword [ebp + 8], 0x10
mov edi, edi
mov ecx, dword [esi + 0xc]
movzx ebx, byte [edx]
mov edi, dword [esi + 8]
mov dword [ebp - 0x4c], ecx
shr ecx, 0x18
movzx ecx, cl
xor ecx, ebx
mov ebx, dword [ebp - 0x4c]
shld ebx, edi, 8
xor ebx, dword [eax + ecx*8 + 4]
shl edi, 8
xor edi, dword [eax + ecx*8]
mov dword [esi + 0xc], ebx
mov ecx, ebx
mov dword [esi + 8], edi
movzx ebx, byte [edx + 1]
mov dword [ebp - 0x4c], ecx
shr ecx, 0x18
movzx ecx, cl
xor ecx, ebx
mov ebx, dword [ebp - 0x4c]
shld ebx, edi, 8
xor ebx, dword [eax + ecx*8 + 4]
shl edi, 8
xor edi, dword [eax + ecx*8]
mov ecx, ebx
mov dword [esi + 0xc], ebx
mov dword [ebp - 0x4c], ecx
mov dword [esi + 8], edi
movzx ebx, byte [edx + 2]
shr ecx, 0x18
movzx ecx, cl
xor ecx, ebx
mov ebx, dword [ebp - 0x4c]
shld ebx, edi, 8
xor ebx, dword [eax + ecx*8 + 4]
shl edi, 8
xor edi, dword [eax + ecx*8]
mov ecx, ebx
mov dword [esi + 0xc], ebx
mov dword [ebp - 0x4c], ecx
mov dword [esi + 8], edi
movzx ebx, byte [edx + 3]
shr ecx, 0x18
movzx ecx, cl
xor ecx, ebx
mov ebx, dword [ebp - 0x4c]
shld ebx, edi, 8
xor ebx, dword [eax + ecx*8 + 4]
shl edi, 8
xor edi, dword [eax + ecx*8]
add edx, 4
sub dword [ebp + 8], 1
mov dword [esi + 8], edi
mov dword [esi + 0xc], ebx
jne 0x1062a60
mov ecx, dword [ebp - 8]
mov edx, dword [esi + 0xe8]
mov eax, dword [edx + 0x2715c]
shr ecx, 2
add ecx, dword [ebp + 0x10]
xor edi, edi
mov dl, byte [ecx]
mov dword [ebp + 8], edi
lea esp, [esp]
cmp dl, byte [edi + ecx]
jne 0x1062b77
inc edi
cmp edi, 0x10
jl 0x1062b30
lea edi, [ecx + 1]
mov dword [ebp - 0x38], 0x10
cmp dl, byte [edi - 1]
je 0x1062b4d
inc dword [ebp + 8]
cmp dl, byte [edi]
je 0x1062b54
inc dword [ebp + 8]
cmp dl, byte [edi + 1]
je 0x1062b5c
inc dword [ebp + 8]
cmp dl, byte [edi + 2]
je 0x1062b64
inc dword [ebp + 8]
add edi, 4
sub dword [ebp - 0x38], 1
jne 0x1062b45
cmp dword [ebp + 8], 4
jl 0x1062c30
mov dword [ebp + 8], 0x10
mov edi, edi
mov edx, dword [esi + 0xc]
movzx ebx, byte [ecx]
mov edi, dword [esi + 8]
mov dword [ebp - 0x4c], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x4c]
shld ebx, edi, 8
xor ebx, dword [eax + edx*8 + 4]
shl edi, 8
xor edi, dword [eax + edx*8]
mov dword [esi + 0xc], ebx
mov edx, ebx
mov dword [esi + 8], edi
movzx ebx, byte [ecx + 1]
mov dword [ebp - 0x4c], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x4c]
shld ebx, edi, 8
xor ebx, dword [eax + edx*8 + 4]
shl edi, 8
xor edi, dword [eax + edx*8]
mov edx, ebx
mov dword [esi + 0xc], ebx
mov dword [ebp - 0x4c], edx
mov dword [esi + 8], edi
movzx ebx, byte [ecx + 2]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x4c]
shld ebx, edi, 8
xor ebx, dword [eax + edx*8 + 4]
shl edi, 8
xor edi, dword [eax + edx*8]
mov edx, ebx
mov dword [esi + 0xc], ebx
mov dword [ebp - 0x4c], edx
mov dword [esi + 8], edi
movzx ebx, byte [ecx + 3]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x4c]
shld ebx, edi, 8
xor ebx, dword [eax + edx*8 + 4]
shl edi, 8
xor edi, dword [eax + edx*8]
add ecx, 4
sub dword [ebp + 8], 1
mov dword [esi + 8], edi
mov dword [esi + 0xc], ebx
jne 0x1062b80
mov eax, 0xaaaaaaab
mul dword [ebp - 8]
mov eax, dword [esi + 0xe8]
mov eax, dword [eax + 0x2715c]
shr edx, 1
add edx, dword [ebp + 0x10]
xor edi, edi
mov cl, byte [edx]
mov dword [ebp + 8], edi
cmp cl, byte [edi + edx]
jne 0x1062c97
inc edi
cmp edi, 8
jl 0x1062c50
lea edi, [edx + 1]
mov dword [ebp - 0x38], 8
cmp cl, byte [edi - 1]
je 0x1062c6d
inc dword [ebp + 8]
cmp cl, byte [edi]
je 0x1062c74
inc dword [ebp + 8]
cmp cl, byte [edi + 1]
je 0x1062c7c
inc dword [ebp + 8]
cmp cl, byte [edi + 2]
je 0x1062c84
inc dword [ebp + 8]
add edi, 4
sub dword [ebp - 0x38], 1
jne 0x1062c65
cmp dword [ebp + 8], 2
jl 0x1062d50
mov dword [ebp + 8], 8
mov edi, edi
mov ecx, dword [esi + 0xc]
movzx ebx, byte [edx]
mov edi, dword [esi + 8]
mov dword [ebp - 0x4c], ecx
shr ecx, 0x18
movzx ecx, cl
xor ecx, ebx
mov ebx, dword [ebp - 0x4c]
shld ebx, edi, 8
xor ebx, dword [eax + ecx*8 + 4]
shl edi, 8
xor edi, dword [eax + ecx*8]
mov dword [esi + 0xc], ebx
mov ecx, ebx
mov dword [esi + 8], edi
movzx ebx, byte [edx + 1]
mov dword [ebp - 0x4c], ecx
shr ecx, 0x18
movzx ecx, cl
xor ecx, ebx
mov ebx, dword [ebp - 0x4c]
shld ebx, edi, 8
xor ebx, dword [eax + ecx*8 + 4]
shl edi, 8
xor edi, dword [eax + ecx*8]
mov ecx, ebx
mov dword [esi + 0xc], ebx
mov dword [ebp - 0x4c], ecx
mov dword [esi + 8], edi
movzx ebx, byte [edx + 2]
shr ecx, 0x18
movzx ecx, cl
xor ecx, ebx
mov ebx, dword [ebp - 0x4c]
shld ebx, edi, 8
xor ebx, dword [eax + ecx*8 + 4]
shl edi, 8
xor edi, dword [eax + ecx*8]
mov ecx, ebx
mov dword [esi + 0xc], ebx
mov dword [ebp - 0x4c], ecx
mov dword [esi + 8], edi
movzx ebx, byte [edx + 3]
shr ecx, 0x18
movzx ecx, cl
xor ecx, ebx
mov ebx, dword [ebp - 0x4c]
shld ebx, edi, 8
xor ebx, dword [eax + ecx*8 + 4]
shl edi, 8
xor edi, dword [eax + ecx*8]
add edx, 4
sub dword [ebp + 8], 1
mov dword [esi + 8], edi
mov dword [esi + 0xc], ebx
jne 0x1062ca0
mov ecx, dword [ebp - 8]
mov edx, dword [esi + 0xe8]
mov eax, dword [edx + 0x2715c]
shr ecx, 1
add ecx, dword [ebp + 0x10]
xor edi, edi
mov dl, byte [ecx]
mov dword [ebp + 8], edi
jmp 0x1062d70
cmp dl, byte [edi + ecx]
jne 0x1062db7
inc edi
cmp edi, 4
jl 0x1062d70
lea edi, [ecx + 1]
mov dword [ebp + 0x10], 4
cmp dl, byte [edi - 1]
je 0x1062d8d
inc dword [ebp + 8]
cmp dl, byte [edi]
je 0x1062d94
inc dword [ebp + 8]
cmp dl, byte [edi + 1]
je 0x1062d9c
inc dword [ebp + 8]
cmp dl, byte [edi + 2]
je 0x1062da4
inc dword [ebp + 8]
add edi, 4
sub dword [ebp + 0x10], 1
jne 0x1062d85
cmp dword [ebp + 8], 1
jl 0x1062e70
mov dword [ebp + 8], 4
mov edi, edi
mov edx, dword [esi + 0xc]
movzx ebx, byte [ecx]
mov edi, dword [esi + 8]
mov dword [ebp - 0x4c], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x4c]
shld ebx, edi, 8
xor ebx, dword [eax + edx*8 + 4]
shl edi, 8
xor edi, dword [eax + edx*8]
mov dword [esi + 0xc], ebx
mov edx, ebx
mov dword [esi + 8], edi
movzx ebx, byte [ecx + 1]
mov dword [ebp - 0x4c], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x4c]
shld ebx, edi, 8
xor ebx, dword [eax + edx*8 + 4]
shl edi, 8
xor edi, dword [eax + edx*8]
mov edx, ebx
mov dword [esi + 0xc], ebx
mov dword [ebp - 0x4c], edx
mov dword [esi + 8], edi
movzx ebx, byte [ecx + 2]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x4c]
shld ebx, edi, 8
xor ebx, dword [eax + edx*8 + 4]
shl edi, 8
xor edi, dword [eax + edx*8]
mov edx, ebx
mov dword [esi + 0xc], ebx
mov dword [ebp - 0x4c], edx
mov dword [esi + 8], edi
movzx ebx, byte [ecx + 3]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x4c]
shld ebx, edi, 8
xor ebx, dword [eax + edx*8 + 4]
shl edi, 8
xor edi, dword [eax + edx*8]
add ecx, 4
sub dword [ebp + 8], 1
mov dword [esi + 8], edi
mov dword [esi + 0xc], ebx
jne 0x1062dc0
mov edx, dword [ebp - 0x18]
mov eax, dword [esi + 0x14]
mov ecx, dword [ebp + 0xc]
mov dword [esi + 0xc8], eax
test edx, edx
jne 0x1062e90
cmp ecx, eax
jae 0x1062e90
test ecx, ecx
jbe 0x1062e90
mov dword [esi + 0x2c], ecx
mov edx, ecx
mov edi, dword [ebp - 0x1c]
push edi
mov edi, dword [ebp - 0x3c]
push edi
mov edi, dword [ebp - 0xc]
push edi
mov edi, dword [esi + 0x10]
push edi
push edx
mov edx, dword [ebp - 0x40]
push ecx
mov ecx, dword [ebp - 0x44]
push edx
push ecx
push eax
push esi
call fcn.01027b60
mov edx, dword [esi + 0xc8]
mov edi, eax
mov dword [esi + 0x14], edx
cmp edi, 0x9641
je 0x1062f16
push esi
call fcn.01026b00
cmp edi, 5
jne 0x1062ed9
mov dword [esi + 0xb8], 1
mov eax, dword [esi + 8]
mov edx, dword [esi + 0xc]
lea ecx, [esi + 8]
mov edi, eax
and edi, edx
cmp edi, 0xffffffff
je 0x1062eef
or eax, edx
jne 0x1062f16
mov eax, dword [esi + 0x14]
cmp eax, 0x100000
jbe 0x1062efe
mov eax, 0x100000
push ecx
mov ecx, dword [esi + 0xe8]
mov edx, dword [ecx + 0x2715c]
push eax
mov eax, dword [esi + 0x10]
push eax
push edx
call fcn.01022990
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret 0xc
mov ecx, dword [esi + 0x14]
mov edx, dword [esi + 0x10]
lea eax, [esi + 8]
push eax
mov eax, dword [esi + 0xe8]
push ecx
mov ecx, dword [eax + 0x2715c]
push edx
push ecx
call fcn.01022990
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret 0xc