Function at 0x1036a40
Capabilities:
Encode data using xor

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x28
mov ecx, dword [ebp + 0xc]
xor eax, eax
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x14], eax
mov dword [ebp - 4], eax
mov dword [ebp - 0x20], 0xffffffff
cmp ecx, 0x400
jae 0x1036a9b
lea eax, [esi + 8]
push eax
add ecx, ecx
mov eax, 0xaaaaaaab
mul ecx
mov eax, dword [esi + 0x5c]
mov ecx, dword [eax]
shr edx, 1
push edx
mov edx, dword [ebp + 0x20]
push edx
push ecx
call fcn.0102e950
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret 0x28
mov eax, dword [ebp + 0x24]
mov ebx, dword [ebp + 0x20]
cmp eax, 4
jne 0x1036ab8
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 8], ecx
mov dword [ebp - 0x14], 1
jmp 0x1036e97
cmp eax, 5
je 0x10376ec
cmp eax, 1
jne 0x103756d
mov edx, dword [ebp + 0x1c]
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp + 0x14]
mov edi, dword [ebp + 0xc]
push edx
mov edx, dword [ebp + 0x2c]
push eax
mov eax, dword [ebp + 0x28]
push ecx
push edi
push ebx
push edx
push eax
push esi
call fcn.01036190
push esi
push edi
push ebx
call fcn.01035090
test eax, eax
jne 0x103720e
lea ecx, [ebx + 0x100]
mov dword [ebp - 0x1c], ecx
mov ecx, dword [ebp + 0x1c]
lea edx, [edi - 0x20]
mov dword [ebp - 8], edi
cmp ecx, edx
jae 0x1036e8b
cmp byte [ecx + ebx + 5], 0xc3
jne 0x1036cbc
mov eax, dword [esi + 0x5c]
mov eax, dword [eax]
mov cl, byte [ebx]
xor edx, edx
xor edi, edi
lea esp, [esp]
cmp cl, byte [edi + ebx]
jne 0x1036b71
inc edi
cmp edi, 2
jl 0x1036b30
cmp cl, byte [ebx + 1]
je 0x1036b45
mov edx, 1
cmp cl, byte [ebx + 2]
je 0x1036b4b
inc edx
cmp cl, byte [ebx + 3]
je 0x1036b51
inc edx
cmp cl, byte [ebx + 4]
je 0x1036b57
inc edx
cmp cl, byte [ebx + 5]
je 0x1036b5d
inc edx
cmp cl, byte [ebx + 6]
je 0x1036b63
inc edx
cmp cl, byte [ebx + 7]
je 0x1036b69
inc edx
test edx, edx
jl 0x1036cb6
mov edx, dword [esi + 0xc]
mov ecx, dword [esi + 8]
mov ebx, edx
shld edx, ecx, 8
shr ebx, 0x18
movzx edi, bl
mov ebx, dword [ebp + 0x20]
movzx ebx, byte [ebx]
xor edi, ebx
xor edx, dword [eax + edi*8 + 4]
mov ebx, dword [ebp + 0x20]
shl ecx, 8
xor ecx, dword [eax + edi*8]
mov dword [esi + 0xc], edx
mov dword [esi + 8], ecx
mov edi, edx
mov dword [ebp - 0x24], edi
movzx edi, byte [ebx + 1]
shr edx, 0x18
movzx edx, dl
xor edx, edi
mov edi, dword [ebp - 0x24]
shld edi, ecx, 8
xor edi, dword [eax + edx*8 + 4]
shl ecx, 8
xor ecx, dword [eax + edx*8]
mov dword [esi + 0xc], edi
mov dword [esi + 8], ecx
mov edx, edi
mov dword [ebp - 0x24], edi
movzx edi, byte [ebx + 2]
shr edx, 0x18
movzx edx, dl
xor edx, edi
mov edi, dword [ebp - 0x24]
shld edi, ecx, 8
xor edi, dword [eax + edx*8 + 4]
shl ecx, 8
xor ecx, dword [eax + edx*8]
mov dword [esi + 0xc], edi
mov edx, edi
mov dword [esi + 8], ecx
mov dword [ebp - 0x24], edi
movzx edi, byte [ebx + 3]
shr edx, 0x18
movzx edx, dl
xor edx, edi
mov edi, dword [ebp - 0x24]
shld edi, ecx, 8
xor edi, dword [eax + edx*8 + 4]
shl ecx, 8
xor ecx, dword [eax + edx*8]
mov dword [esi + 0xc], edi
mov edx, edi
mov dword [esi + 8], ecx
mov dword [ebp - 0x24], edi
movzx edi, byte [ebx + 4]
shr edx, 0x18
movzx edx, dl
xor edx, edi
mov edi, dword [ebp - 0x24]
shld edi, ecx, 8
xor edi, dword [eax + edx*8 + 4]
shl ecx, 8
xor ecx, dword [eax + edx*8]
mov edx, edi
mov dword [esi + 0xc], edi
mov dword [esi + 8], ecx
mov dword [ebp - 0x24], edi
movzx edi, byte [ebx + 5]
shr edx, 0x18
movzx edx, dl
xor edx, edi
mov edi, dword [ebp - 0x24]
shld edi, ecx, 8
shl ecx, 8
xor ecx, dword [eax + edx*8]
xor edi, dword [eax + edx*8 + 4]
mov dword [esi + 8], ecx
mov dword [esi + 0xc], edi
mov dword [ebp - 0x24], edi
mov edx, edi
movzx edi, byte [ebx + 6]
shr edx, 0x18
movzx edx, dl
xor edx, edi
mov edi, dword [ebp - 0x24]
shld edi, ecx, 8
xor edi, dword [eax + edx*8 + 4]
shl ecx, 8
xor ecx, dword [eax + edx*8]
mov edx, edi
mov dword [esi + 0xc], edi
mov dword [esi + 8], ecx
mov dword [ebp - 0x24], edi
movzx edi, byte [ebx + 7]
shr edx, 0x18
movzx edx, dl
xor edx, edi
mov edi, dword [ebp - 0x24]
shld edi, ecx, 8
shl ecx, 8
xor ecx, dword [eax + edx*8]
xor edi, dword [eax + edx*8 + 4]
mov dword [esi + 8], ecx
mov dword [esi + 0xc], edi
mov ecx, dword [ebp + 0x1c]
mov edi, dword [ebp + 0xc]
cmp ecx, edi
jae 0x1036cdc
mov al, byte [ecx + ebx]
cmp al, 0x60
je 0x1036cd7
cmp al, 0x66
je 0x1036cd7
cmp al, 0x9c
je 0x1036cd7
cmp al, 0x90
je 0x1036cd7
cmp al, 0x65
jne 0x1036cdc
inc ecx
cmp ecx, edi
jb 0x1036cc0
add ecx, ebx
cmp byte [ecx], 0xe8
jne 0x1036e8b
mov eax, dword [esi + 0x5c]
mov eax, dword [eax]
xor edx, edx
mov dword [ebp - 0x24], edx
mov dword [ebp + 0x24], edx
mov dl, byte [ecx]
mov byte [ebp + 0xb], dl
lea esp, [esp]
mov edi, dword [ebp + 0x24]
cmp dl, byte [edi + ecx]
jne 0x1036d4a
inc edi
cmp edi, 2
mov dword [ebp + 0x24], edi
jl 0x1036d00
mov edi, 1
cmp dl, byte [ecx + 1]
jne 0x1036d1e
mov edi, dword [ebp - 0x24]
cmp dl, byte [ecx + 2]
je 0x1036d24
inc edi
cmp dl, byte [ecx + 3]
je 0x1036d2a
inc edi
cmp dl, byte [ecx + 4]
je 0x1036d30
inc edi
cmp dl, byte [ecx + 5]
je 0x1036d36
inc edi
cmp dl, byte [ecx + 6]
je 0x1036d3c
inc edi
cmp dl, byte [ecx + 7]
je 0x1036d42
inc edi
test edi, edi
jl 0x1036e8b
mov edx, dword [esi + 0xc]
mov edi, dword [esi + 8]
movzx ebx, byte [ebp + 0xb]
mov dword [ebp - 0x24], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
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 - 0x24], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
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 + 2]
mov dword [ebp - 0x24], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
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 [ebp - 0x24], edx
mov dword [esi + 8], edi
movzx ebx, byte [ecx + 3]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
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 - 0x24], edx
mov dword [esi + 8], edi
movzx ebx, byte [ecx + 4]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
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 [ebp - 0x24], edx
mov dword [esi + 0xc], ebx
mov dword [esi + 8], edi
movzx ebx, byte [ecx + 5]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
shld ebx, edi, 8
shl edi, 8
xor edi, dword [eax + edx*8]
xor ebx, dword [eax + edx*8 + 4]
mov dword [esi + 8], edi
mov edx, ebx
mov dword [esi + 0xc], ebx
mov dword [ebp - 0x24], edx
movzx ebx, byte [ecx + 6]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
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 [esi + 8], edi
movzx ecx, byte [ecx + 7]
shr edx, 0x18
shld ebx, edi, 8
movzx edx, dl
xor edx, ecx
shl edi, 8
xor edi, dword [eax + edx*8]
xor ebx, dword [eax + edx*8 + 4]
mov dword [esi + 8], edi
mov dword [esi + 0xc], ebx
mov ebx, dword [ebp + 0x20]
mov edx, dword [ebp + 0xc]
cmp dword [ebp + 0x14], edx
ja 0x103720e
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp - 0x1c]
sub edx, ebx
lea eax, [ecx - 0x80]
add ecx, edx
cmp ecx, eax
jbe 0x1036ec3
mov edx, dword [ebp - 8]
jmp 0x1036eb0
sub ecx, 0x200
sub edx, 0x200
cmp ecx, eax
ja 0x1036eb0
mov dword [ebp - 8], edx
mov eax, dword [esi + 0x58]
cmp dword [eax + 4], 0
mov dword [ebp + 8], 0
jbe 0x1036fb0
add eax, 8
mov dword [ebp + 0x24], eax
lea ecx, [ecx]
mov eax, dword [ebp - 8]
cmp eax, 0x100000
jbe 0x1036eef
mov eax, 0x100000
mov ecx, dword [ebp + 0x24]
mov edx, dword [ecx + 0x14]
push edx
push ecx
push eax
mov eax, dword [ebp - 0x1c]
push eax
call fcn.01028170
mov edi, eax
sub edi, ebx
cmp edi, 0x14
jbe 0x1036f99
mov ecx, dword [ebp + 0xc]
add ecx, 0xfffffc00
cmp edi, ecx
jae 0x1036f99
mov edx, dword [ebp + 0x24]
mov eax, dword [edx + 0x1c]
test eax, eax
je 0x1036f4c
lea ecx, [eax + eax*8]
mov eax, dword [esi + 0x58]
mov edx, dword [eax + ecx*4 + 0xe2c]
lea eax, [eax + ecx*4]
push edx
add eax, 0xe18
push eax
push 0x54
lea eax, [edi + ebx - 0x20]
push eax
call fcn.01028170
test eax, eax
je 0x1036f99
mov eax, dword [ebp + 0x24]
mov ecx, dword [eax + 0x18]
cmp ecx, 7
je 0x1037226
cmp ecx, 6
je 0x103725b
mov eax, dword [eax + 0x20]
test eax, eax
je 0x1036f74
add eax, edi
cmp eax, dword [ebp + 0xc]
jae 0x1036f74
mov edi, eax
cmp ecx, 2
je 0x103727d
mov eax, dword [ebp - 4]
cmp edi, eax
jbe 0x1036f90
test eax, eax
jne 0x1036f99
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x20], ecx
jmp 0x1036f96
mov edx, dword [ebp + 8]
mov dword [ebp - 0x20], edx
mov dword [ebp - 4], edi
mov eax, dword [ebp + 8]
mov ecx, dword [esi + 0x58]
add dword [ebp + 0x24], 0x24
inc eax
mov dword [ebp + 8], eax
cmp eax, dword [ecx + 4]
jb 0x1036ee0
cmp dword [ebp - 0x14], 0
jne 0x10371fa
mov edi, dword [ebp + 0xc]
mov eax, dword [esi + 0x2c]
mov ecx, dword [ebp + 0x10]
dec edi
mov dword [ebp - 8], edi
cmp ecx, eax
jbe 0x1036fd2
sub eax, ecx
add edi, eax
mov dword [ebp - 8], edi
cmp edi, 0x400
jbe 0x1037010
lea ebx, [ebx]
mov al, byte [ebx + edi - 1]
test al, al
je 0x1037004
cmp al, 0x50
je 0x1037004
cmp al, 0x41
je 0x1037004
cmp al, 0x44
je 0x1037004
cmp al, 0x49
je 0x1037004
cmp al, 0x4e
je 0x1037004
cmp al, 0x47
je 0x1037004
cmp al, 0x58
jne 0x103700d
dec edi
cmp edi, 0x400
ja 0x1036fe0
mov dword [ebp - 8], edi
mov edx, dword [ebp + 0x2c]
mov ecx, dword [ebp + 0x1c]
shr edx, 1
add edx, dword [ebp + 0x28]
cmp ecx, edx
ja 0x1037036
mov edx, edi
imul edx, edx, 0xb
mov eax, 0xaaaaaaab
mul edx
shr edx, 3
cmp ecx, edx
jbe 0x103719c
lea eax, [ecx + ebx]
xor edx, edx
mov dword [ebp + 8], eax
add eax, 0xfffffffe
lea ecx, [edx + 8]
cmp byte [eax + 2], 0
jne 0x103704b
inc edx
cmp byte [eax + 1], 0
jne 0x1037052
inc edx
cmp byte [eax], 0
jne 0x1037058
inc edx
cmp byte [eax - 1], 0
jne 0x103705f
inc edx
sub eax, 4
sub ecx, 1
jne 0x1037044
cmp edx, 0x10
jl 0x103719c
mov ecx, dword [ebp + 8]
mov eax, dword [esi + 0x5c]
mov eax, dword [eax]
xor edx, edx
mov dword [ebp + 8], edx
mov dword [ebp + 0x24], edx
mov dl, byte [ecx]
mov edi, dword [ebp + 0x24]
cmp dl, byte [edi + ecx]
jne 0x10370df
inc edi
cmp edi, 4
mov dword [ebp + 0x24], edi
jl 0x1037082
lea edi, [ecx + 1]
mov dword [ebp + 0x24], edi
mov dword [ebp - 0x1c], 4
mov edi, dword [ebp + 0x24]
cmp dl, byte [edi - 1]
je 0x10370ab
inc dword [ebp + 8]
mov edi, dword [ebp + 0x24]
cmp dl, byte [edi]
je 0x10370b5
inc dword [ebp + 8]
mov edi, dword [ebp + 0x24]
cmp dl, byte [edi + 1]
je 0x10370c0
inc dword [ebp + 8]
mov edi, dword [ebp + 0x24]
cmp dl, byte [edi + 2]
je 0x10370cb
inc dword [ebp + 8]
add dword [ebp + 0x24], 4
sub dword [ebp - 0x1c], 1
jne 0x10370a0
cmp dword [ebp + 8], 1
jl 0x1037199
mov dword [ebp + 8], 4
mov edx, dword [esi + 0xc]
movzx ebx, byte [ecx]
mov edi, dword [esi + 8]
mov dword [ebp - 0x24], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
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 - 0x24], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
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 - 0x24], edx
mov dword [esi + 8], edi
movzx ebx, byte [ecx + 2]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
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 - 0x24], edx
mov dword [esi + 8], edi
movzx ebx, byte [ecx + 3]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
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 0x10370e6
mov ebx, dword [ebp + 0x20]
mov edi, dword [ebp - 8]
lea eax, [edi*8]
sub eax, edi
shr eax, 3
lea ecx, [edi - 0x200]
cmp ecx, eax
jbe 0x10371b4
mov eax, ecx
mov edx, dword [ebp + 0x1c]
cmp edx, eax
jbe 0x10371fa
mov ecx, 0xe
mov eax, 0x100c118
lea edi, [edx + ebx + 0xe]
lea esp, [esp]
mov edx, dword [edi]
cmp edx, dword [eax]
jne 0x10371f2
sub ecx, 4
add eax, 4
add edi, 4
cmp ecx, 4
jae 0x10371d0
mov cl, byte [eax]
cmp cl, byte [edi]
jne 0x10371f2
mov dl, byte [eax + 1]
cmp dl, byte [edi + 1]
je 0x10371fa
xor dword [esi + 8], 2
xor dword [esi + 0xc], 0
cmp dword [ebp - 0x20], 0xffffffff
jne 0x10372e3
cmp dword [ebp - 0x14], 0
jne 0x103808c
mov ecx, dword [ebp + 0xc]
push ecx
push esi
call fcn.01035b80
pop edi
pop esi
mov eax, 0x9641
pop ebx
mov esp, ebp
pop ebp
ret 0x28
mov ecx, dword [esi + 0x44]
mov edx, dword [ebp + 0xc]
sub edx, ecx
mov eax, 0xcccccccd
mul edx
shr edx, 3
lea eax, [esi + 8]
push eax
add ecx, edx
push edx
add ecx, ebx
push ecx
mov ecx, dword [esi + 0x5c]
mov edx, dword [ecx]
push edx
call fcn.0102e950
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret 0x28
mov ecx, dword [ebp + 0xc]
mov edx, dword [esi + 0x5c]
lea eax, [esi + 8]
push eax
mov eax, dword [edx]
push ecx
push ebx
push eax
call fcn.0102edc0
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret 0x28
mov ecx, dword [ebp + 0xc]
push 0x28
push 0x100c0ec
sub ecx, edi
push ecx
lea edx, [edi + ebx]
push edx
call fcn.01034df0
sub eax, ebx
cmp eax, dword [ebp + 0xc]
jae 0x10372e0
cmp eax, 0x14
jbe 0x10372e0
cmp eax, 0x800
jbe 0x10372ac
lea edi, [eax - 0x400]
mov eax, 3
cmp edi, 0x400
jbe 0x10372d2
lea esp, [esp]
mov cl, byte [edi + ebx]
cmp cl, byte [edi + ebx - 1]
jne 0x10372d2
dec edi
cmp edi, 0x400
ja 0x10372c0
sub edi, 0x10
sub eax, 1
jne 0x10372b1
sub edi, 0x200
mov dword [ebp - 4], edi
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp - 4]
lea edx, [ecx - 0x200]
mov dword [ebp + 0x24], eax
cmp eax, edx
jbe 0x10372fe
mov eax, ecx
shr eax, 2
mov dword [ebp + 0x24], eax
add ebx, eax
mov eax, dword [esi + 0x5c]
mov eax, dword [eax]
xor edx, edx
mov dword [ebp + 0x1c], edx
mov dword [ebp + 8], edx
mov dl, byte [ebx]
lea ecx, [esi + 8]
mov dword [ebp - 0xc], ebx
mov dword [ebp + 0x18], ebx
mov edi, dword [ebp + 8]
cmp dl, byte [edi + ebx]
jne 0x1037375
inc edi
cmp edi, 0x20
mov dword [ebp + 8], edi
jl 0x1037318
lea edi, [ebx + 1]
mov dword [ebp + 8], edi
mov dword [ebp - 0x20], 0x20
mov edi, dword [ebp + 8]
cmp dl, byte [edi - 1]
je 0x1037341
inc dword [ebp + 0x1c]
mov edi, dword [ebp + 8]
cmp dl, byte [edi]
je 0x103734b
inc dword [ebp + 0x1c]
mov edi, dword [ebp + 8]
cmp dl, byte [edi + 1]
je 0x1037356
inc dword [ebp + 0x1c]
mov edi, dword [ebp + 8]
cmp dl, byte [edi + 2]
je 0x1037361
inc dword [ebp + 0x1c]
add dword [ebp + 8], 4
sub dword [ebp - 0x20], 1
jne 0x1037336
cmp dword [ebp + 0x1c], 8
jl 0x103743a
mov dword [ebp + 0x1c], 0x20
lea esp, [esp]
movzx ebx, byte [ebx]
mov edx, dword [ecx + 4]
mov edi, dword [ecx]
mov dword [ebp - 0x24], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
shld ebx, edi, 8
xor ebx, dword [eax + edx*8 + 4]
shl edi, 8
xor edi, dword [eax + edx*8]
mov dword [ecx + 4], ebx
mov edx, ebx
mov ebx, dword [ebp + 0x18]
mov dword [ecx], edi
movzx ebx, byte [ebx + 1]
mov dword [ebp - 0x24], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
shld ebx, edi, 8
xor ebx, dword [eax + edx*8 + 4]
shl edi, 8
xor edi, dword [eax + edx*8]
mov dword [ecx + 4], ebx
mov edx, ebx
mov ebx, dword [ebp + 0x18]
mov dword [ebp - 0x24], edx
mov dword [ecx], edi
movzx ebx, byte [ebx + 2]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
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 [ecx + 4], ebx
mov ebx, dword [ebp + 0x18]
mov dword [ebp - 0x24], edx
mov dword [ecx], edi
movzx ebx, byte [ebx + 3]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
shld ebx, edi, 8
xor ebx, dword [eax + edx*8 + 4]
shl edi, 8
xor edi, dword [eax + edx*8]
mov dword [ecx + 4], ebx
mov ebx, dword [ebp + 0x18]
add ebx, 4
sub dword [ebp + 0x1c], 1
mov dword [ecx], edi
mov dword [ebp + 0x18], ebx
jne 0x1037380
mov eax, dword [esi + 0x5c]
mov edx, dword [ebp - 0xc]
mov edi, dword [eax]
mov bl, byte [edx + 0xc0]
add edx, 0xc0
xor eax, eax
mov dword [ebp + 8], edx
mov dword [ebp + 0x1c], eax
cmp bl, byte [eax + edx]
jne 0x10374a2
inc eax
cmp eax, 8
jl 0x1037456
lea eax, [edx + 1]
mov dword [ebp + 0x18], 8
jmp 0x1037470
cmp bl, byte [eax - 1]
je 0x1037478
inc dword [ebp + 0x1c]
cmp bl, byte [eax]
je 0x103747f
inc dword [ebp + 0x1c]
cmp bl, byte [eax + 1]
je 0x1037487
inc dword [ebp + 0x1c]
cmp bl, byte [eax + 2]
je 0x103748f
inc dword [ebp + 0x1c]
add eax, 4
sub dword [ebp + 0x18], 1
jne 0x1037470
cmp dword [ebp + 0x1c], 2
jl 0x103817e
mov dword [ebp + 0x1c], 8
lea esp, [esp]
mov edx, dword [ecx + 4]
mov ebx, dword [ebp + 8]
movzx ebx, byte [ebx]
mov eax, dword [ecx]
mov dword [ebp - 0x24], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
shld ebx, eax, 8
xor ebx, dword [edi + edx*8 + 4]
shl eax, 8
xor eax, dword [edi + edx*8]
mov dword [ecx + 4], ebx
mov edx, ebx
mov ebx, dword [ebp + 8]
mov dword [ecx], eax
movzx ebx, byte [ebx + 1]
mov dword [ebp - 0x24], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
shld ebx, eax, 8
xor ebx, dword [edi + edx*8 + 4]
shl eax, 8
xor eax, dword [edi + edx*8]
mov dword [ecx + 4], ebx
mov edx, ebx
mov ebx, dword [ebp + 8]
mov dword [ebp - 0x24], edx
mov dword [ecx], eax
movzx ebx, byte [ebx + 2]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
shld ebx, eax, 8
xor ebx, dword [edi + edx*8 + 4]
shl eax, 8
xor eax, dword [edi + edx*8]
mov edx, ebx
mov dword [ecx + 4], ebx
mov ebx, dword [ebp + 8]
add dword [ebp + 8], 4
mov dword [ebp - 0x24], edx
mov dword [ecx], eax
movzx ebx, byte [ebx + 3]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
shld ebx, eax, 8
xor ebx, dword [edi + edx*8 + 4]
shl eax, 8
xor eax, dword [edi + edx*8]
sub dword [ebp + 0x1c], 1
mov dword [ecx], eax
mov dword [ecx + 4], ebx
jne 0x10374b0
jmp 0x10382e8
cmp eax, 2
jne 0x103808c
mov eax, dword [esi + 0x28]
cmp eax, 0x100
jae 0x10376d9
test eax, eax
jbe 0x10376d9
add ecx, 0xffffffe0
cmp eax, ecx
jae 0x10376d9
lea ecx, [eax + ebx]
mov al, byte [ecx]
cmp al, 0xe0
jb 0x10376d9
cmp al, 0xf0
jae 0x10376d9
mov edx, dword [esi + 0x5c]
mov eax, dword [edx]
xor edx, edx
mov dword [ebp + 8], edx
mov dword [ebp + 0x24], edx
mov dl, byte [ecx]
jmp 0x10375c0
mov edi, dword [ebp + 0x24]
cmp dl, byte [edi + ecx]
jne 0x103761f
inc edi
cmp edi, 4
mov dword [ebp + 0x24], edi
jl 0x10375c0
lea edi, [ecx + 1]
mov dword [ebp + 0x24], edi
mov dword [ebp - 0x20], 4
mov edi, edi
mov edi, dword [ebp + 0x24]
cmp dl, byte [edi - 1]
je 0x10375eb
inc dword [ebp + 8]
mov edi, dword [ebp + 0x24]
cmp dl, byte [edi]
je 0x10375f5
inc dword [ebp + 8]
mov edi, dword [ebp + 0x24]
cmp dl, byte [edi + 1]
je 0x1037600
inc dword [ebp + 8]
mov edi, dword [ebp + 0x24]
cmp dl, byte [edi + 2]
je 0x103760b
inc dword [ebp + 8]
add dword [ebp + 0x24], 4
sub dword [ebp - 0x20], 1
jne 0x10375e0
cmp dword [ebp + 8], 1
jl 0x10376d9
mov dword [ebp + 8], 4
mov edx, dword [esi + 0xc]
movzx ebx, byte [ecx]
mov edi, dword [esi + 8]
mov dword [ebp - 0x24], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
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 - 0x24], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
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 - 0x24], edx
mov dword [esi + 8], edi
movzx ebx, byte [ecx + 2]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
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 - 0x24], edx
mov dword [esi + 8], edi
movzx ebx, byte [ecx + 3]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
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 0x1037626
mov ebx, dword [ebp + 0x20]
mov eax, dword [ebp + 0xc]
push esi
push eax
push ebx
call fcn.01035090
test eax, eax
jne 0x103720e
mov edi, dword [ebp + 0xc]
mov eax, edi
cmp edi, 0x100000
jbe 0x10376fe
mov eax, 0x100000
push 3
push 0x100c0b8
push eax
push ebx
call fcn.01028170
mov ecx, dword [ebp + 0x1c]
sub eax, ebx
cmp eax, 0x14
jbe 0x1037727
lea edx, [edi - 0x400]
cmp eax, edx
jae 0x1037727
add eax, 0x100
jmp 0x1037735
test ecx, ecx
je 0x1037732
mov eax, ecx
mov dword [ebp + 0x24], ecx
jmp 0x1037738
mov eax, dword [ebp + 0x18]
mov dword [ebp + 0x24], eax
lea ecx, [edi - 0x200]
cmp eax, ecx
jbe 0x103774a
mov eax, edi
shr eax, 2
mov dword [ebp + 0x24], eax
mov ecx, edi
sub edi, eax
mov dword [ebp + 8], eax
lea eax, [ecx - 0xa]
cmp eax, 0x100000
jbe 0x1037760
mov eax, 0x100000
push 9
push 0x100c0e0
push eax
push ebx
call fcn.01028170
test eax, eax
je 0x103777b
mov edi, dword [ebp + 0xc]
sub eax, ebx
sub edi, eax
jmp 0x103777e
mov eax, dword [ebp + 8]
mov dword [ebp + 8], 0
mov ecx, dword [ebp + 0xc]
add ecx, 0xffffffe0
lea edx, [eax + ebx]
cmp eax, ecx
ja 0x1037b77
mov eax, edi
cmp edi, 0x100000
jbe 0x10377a5
mov eax, 0x100000
push 3
push 0x100c0b8
push eax
push edx
call fcn.01028170
sub eax, ebx
mov dword [ebp - 8], eax
cmp eax, 0x14
jbe 0x1037b77
cmp eax, dword [ebp + 0xc]
jae 0x1037b77
push 5
push 0x100c0d8
lea edi, [eax + ebx]
push 0x20
push edi
call fcn.01028170
test eax, eax
jne 0x10377f3
push 5
push 0x100c0d0
push 0x20
push edi
call fcn.01028170
test eax, eax
je 0x103780e
sub eax, dword [ebp - 8]
mov edx, dword [esi + 0x5c]
lea ecx, [esi + 8]
push ecx
sub eax, ebx
push eax
mov eax, dword [edx]
push edi
push eax
call fcn.0102e950
jmp 0x1037b4a
mov ecx, dword [esi + 0x5c]
mov eax, dword [ecx]
mov dl, byte [edi]
xor ecx, ecx
mov dword [ebp - 0x24], ecx
lea ebx, [ebx]
cmp dl, byte [ecx + edi]
jne 0x1037864
inc ecx
cmp ecx, 2
jl 0x1037820
mov ecx, 1
cmp dl, byte [edi + 1]
jne 0x1037838
mov ecx, dword [ebp - 0x24]
cmp dl, byte [edi + 2]
je 0x103783e
inc ecx
cmp dl, byte [edi + 3]
je 0x1037844
inc ecx
cmp dl, byte [edi + 4]
je 0x103784a
inc ecx
cmp dl, byte [edi + 5]
je 0x1037850
inc ecx
cmp dl, byte [edi + 6]
je 0x1037856
inc ecx
cmp dl, byte [edi + 7]
je 0x103785c
inc ecx
test ecx, ecx
jl 0x10379a4
movzx ebx, byte [edi]
mov edx, dword [esi + 0xc]
mov ecx, dword [esi + 8]
mov dword [ebp - 0x14], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x14]
shld ebx, ecx, 8
xor ebx, dword [eax + edx*8 + 4]
shl ecx, 8
xor ecx, dword [eax + edx*8]
mov dword [esi + 0xc], ebx
mov edx, ebx
mov dword [esi + 8], ecx
movzx ebx, byte [edi + 1]
mov dword [ebp - 0x14], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x14]
shld ebx, ecx, 8
xor ebx, dword [eax + edx*8 + 4]
shl ecx, 8
xor ecx, dword [eax + edx*8]
mov dword [esi + 0xc], ebx
mov edx, ebx
mov dword [esi + 8], ecx
movzx ebx, byte [edi + 2]
mov dword [ebp - 0x14], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x14]
shld ebx, ecx, 8
xor ebx, dword [eax + edx*8 + 4]
shl ecx, 8
xor ecx, dword [eax + edx*8]
mov dword [esi + 0xc], ebx
mov edx, ebx
mov dword [ebp - 0x14], edx
mov dword [esi + 8], ecx
movzx ebx, byte [edi + 3]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x14]
shld ebx, ecx, 8
xor ebx, dword [eax + edx*8 + 4]
shl ecx, 8
xor ecx, dword [eax + edx*8]
mov edx, ebx
mov dword [esi + 0xc], ebx
mov dword [ebp - 0x14], edx
mov dword [esi + 8], ecx
movzx ebx, byte [edi + 4]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x14]
shld ebx, ecx, 8
xor ebx, dword [eax + edx*8 + 4]
shl ecx, 8
xor ecx, dword [eax + edx*8]
mov edx, ebx
mov dword [ebp - 0x14], edx
mov dword [esi + 0xc], ebx
mov dword [esi + 8], ecx
movzx ebx, byte [edi + 5]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x14]
shld ebx, ecx, 8
shl ecx, 8
xor ecx, dword [eax + edx*8]
xor ebx, dword [eax + edx*8 + 4]
mov dword [esi + 8], ecx
mov edx, ebx
mov dword [esi + 0xc], ebx
mov dword [ebp - 0x14], edx
movzx ebx, byte [edi + 6]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x14]
shld ebx, ecx, 8
xor ebx, dword [eax + edx*8 + 4]
shl ecx, 8
xor ecx, dword [eax + edx*8]
mov edx, ebx
mov dword [esi + 0xc], ebx
mov dword [esi + 8], ecx
movzx edi, byte [edi + 7]
shr edx, 0x18
shld ebx, ecx, 8
movzx edx, dl
xor edx, edi
shl ecx, 8
xor ecx, dword [eax + edx*8]
xor ebx, dword [eax + edx*8 + 4]
mov dword [esi + 8], ecx
mov dword [esi + 0xc], ebx
mov ebx, dword [ebp + 0x20]
mov eax, dword [ebp - 8]
mov edx, dword [esi + 0x5c]
lea ecx, [eax + ebx + 0x10]
mov eax, dword [edx]
xor edx, edx
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x20], edx
mov dl, byte [ecx]
lea ebx, [ebx]
mov edi, dword [ebp - 0x20]
cmp dl, byte [edi + ecx]
jne 0x1037a0a
inc edi
cmp edi, 2
mov dword [ebp - 0x20], edi
jl 0x10379c0
mov edi, 1
cmp dl, byte [ecx + 1]
jne 0x10379de
mov edi, dword [ebp - 0x24]
cmp dl, byte [ecx + 2]
je 0x10379e4
inc edi
cmp dl, byte [ecx + 3]
je 0x10379ea
inc edi
cmp dl, byte [ecx + 4]
je 0x10379f0
inc edi
cmp dl, byte [ecx + 5]
je 0x10379f6
inc edi
cmp dl, byte [ecx + 6]
je 0x10379fc
inc edi
cmp dl, byte [ecx + 7]
je 0x1037a02
inc edi
test edi, edi
jl 0x1037b4a
movzx ebx, byte [ecx]
mov edx, dword [esi + 0xc]
mov edi, dword [esi + 8]
mov dword [ebp - 0xc], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0xc]
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 - 0xc], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0xc]
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 + 2]
mov dword [ebp - 0xc], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0xc]
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 [ebp - 0xc], edx
mov dword [esi + 8], edi
movzx ebx, byte [ecx + 3]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0xc]
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 - 0xc], edx
mov dword [esi + 8], edi
movzx ebx, byte [ecx + 4]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0xc]
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 [ebp - 0xc], edx
mov dword [esi + 0xc], ebx
mov dword [esi + 8], edi
movzx ebx, byte [ecx + 5]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0xc]
shld ebx, edi, 8
shl edi, 8
xor edi, dword [eax + edx*8]
xor ebx, dword [eax + edx*8 + 4]
mov dword [esi + 8], edi
mov edx, ebx
mov dword [esi + 0xc], ebx
mov dword [ebp - 0xc], edx
movzx ebx, byte [ecx + 6]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0xc]
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 [esi + 8], edi
movzx ecx, byte [ecx + 7]
shr edx, 0x18
shld ebx, edi, 8
movzx edx, dl
xor edx, ecx
shl edi, 8
xor edi, dword [eax + edx*8]
xor ebx, dword [eax + edx*8 + 4]
mov dword [esi + 8], edi
mov dword [esi + 0xc], ebx
mov ebx, dword [ebp + 0x20]
mov eax, dword [ebp - 8]
mov ecx, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
add eax, 0x18
inc ecx
sub edi, eax
mov dword [ebp + 8], ecx
cmp ecx, 0xa
jb 0x1037785
mov edx, dword [ebp + 0x10]
mov eax, dword [ebp + 0x14]
mov ecx, dword [ebp + 0xc]
push edx
push eax
push ecx
push ebx
jmp 0x10382fe
mov eax, dword [ebp + 0xc]
mov edi, dword [ebp + 0x24]
lea edx, [eax + eax*4]
mov eax, 0xaaaaaaab
mul edx
shr edx, 2
mov dword [ebp + 8], edx
lea ecx, [ecx]
mov ecx, dword [ebp + 0xc]
mov edx, 2
cmp edi, ecx
jae 0x1037bb5
lea esp, [esp]
mov al, byte [edi + ebx]
test al, al
je 0x1037bab
cmp al, 0x90
jne 0x1037bb2
inc edi
cmp edi, ecx
jb 0x1037ba0
jmp 0x1037bb5
add edi, 0x10
sub edx, 1
jne 0x1037b98
sub edi, 0x10
cmp edi, dword [ebp + 8]
ja 0x1037bcc
lea eax, [ecx - 0x400]
cmp edi, eax
jbe 0x1037bd2
mov edx, ecx
shr edx, 1
sub edi, edx
lea eax, [ecx - 0x200]
cmp edi, eax
jbe 0x1037be1
mov edi, ecx
shr edi, 2
push 0x200
lea eax, [edi + ebx]
push eax
call fcn.01034e20
fcomp qword [0x100c0c8]
fnstsw ax
test ah, 5
jp 0x1037c58
mov edi, dword [ebp + 0x1c]
test edi, edi
ja 0x1037c06
mov edi, dword [ebp + 0x18]
add edi, 0xffffff80
cmp dword [ebp - 0x1c], 0
jne 0x1037c1b
mov dword [ebp - 0x1c], 1
jmp 0x1037b90
mov eax, dword [ebp + 0xc]
shr eax, 1
cmp eax, 0x100000
jbe 0x1037c2c
mov eax, 0x100000
lea ecx, [esi + 8]
push ecx
push eax
mov eax, 0xaaaaaaab
mul dword [ebp + 0xc]
shr edx, 2
add edx, ebx
push edx
mov edx, dword [esi + 0x5c]
mov eax, dword [edx]
push eax
call fcn.0102e950
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret 0x28
mov ecx, dword [ebp + 0xc]
lea eax, [ecx - 0x200]
cmp edi, eax
jbe 0x1037c6a
mov edi, ecx
shr edi, 2
mov edx, dword [esi + 0x5c]
mov eax, dword [edx]
xor edx, edx
lea ecx, [edi + ebx]
mov dword [ebp + 0x1c], edx
mov dword [ebp + 8], edx
mov dl, byte [ecx]
mov dword [ebp - 0xc], ecx
nop
mov edi, dword [ebp + 8]
cmp dl, byte [edi + ecx]
jne 0x1037cdf
inc edi
cmp edi, 4
mov dword [ebp + 8], edi
jl 0x1037c80
lea edi, [ecx + 1]
mov dword [ebp + 8], edi
mov dword [ebp + 0x18], 4
mov edi, edi
mov edi, dword [ebp + 8]
cmp dl, byte [edi - 1]
je 0x1037cab
inc dword [ebp + 0x1c]
mov edi, dword [ebp + 8]
cmp dl, byte [edi]
je 0x1037cb5
inc dword [ebp + 0x1c]
mov edi, dword [ebp + 8]
cmp dl, byte [edi + 1]
je 0x1037cc0
inc dword [ebp + 0x1c]
mov edi, dword [ebp + 8]
cmp dl, byte [edi + 2]
je 0x1037ccb
inc dword [ebp + 0x1c]
add dword [ebp + 8], 4
sub dword [ebp + 0x18], 1
jne 0x1037ca0
cmp dword [ebp + 0x1c], 1
jl 0x1037d99
mov dword [ebp + 0x1c], 4
mov edx, dword [esi + 0xc]
movzx ebx, byte [ecx]
mov edi, dword [esi + 8]
mov dword [ebp - 0x24], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
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 - 0x24], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
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 - 0x24], edx
mov dword [esi + 8], edi
movzx ebx, byte [ecx + 2]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
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 - 0x24], edx
mov dword [esi + 8], edi
movzx ebx, byte [ecx + 3]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
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 + 0x1c], 1
mov dword [esi + 8], edi
mov dword [esi + 0xc], ebx
jne 0x1037ce6
mov ebx, dword [ebp + 0x20]
mov ecx, dword [ebp - 0xc]
mov eax, dword [esi + 0x5c]
mov eax, dword [eax]
add ecx, 0x40
xor edx, edx
mov dword [ebp + 0x1c], edx
mov dword [ebp + 8], edx
mov dl, byte [ecx]
mov edi, edi
mov edi, dword [ebp + 8]
cmp dl, byte [edi + ecx]
jne 0x1037e25
inc edi
cmp edi, 3
mov dword [ebp + 8], edi
jl 0x1037db0
lea edi, [ecx + 1]
mov dword [ebp + 8], edi
mov dword [ebp + 0x18], 2
mov edi, edi
mov edi, dword [ebp + 8]
cmp dl, byte [edi - 1]
je 0x1037ddb
inc dword [ebp + 0x1c]
mov edi, dword [ebp + 8]
cmp dl, byte [edi]
je 0x1037de5
inc dword [ebp + 0x1c]
mov edi, dword [ebp + 8]
cmp dl, byte [edi + 1]
je 0x1037df0
inc dword [ebp + 0x1c]
mov edi, dword [ebp + 8]
cmp dl, byte [edi + 2]
je 0x1037dfb
inc dword [ebp + 0x1c]
mov edi, dword [ebp + 8]
cmp dl, byte [edi + 3]
je 0x1037e06
inc dword [ebp + 0x1c]
mov edi, dword [ebp + 8]
cmp dl, byte [edi + 4]
je 0x1037e11
inc dword [ebp + 0x1c]
add dword [ebp + 8], 6
sub dword [ebp + 0x18], 1
jne 0x1037dd0
cmp dword [ebp + 0x1c], 0
jl 0x1037f33
mov dword [ebp + 0x1c], 2
lea esp, [esp]
movzx ebx, byte [ecx]
mov edx, dword [esi + 0xc]
mov edi, dword [esi + 8]
mov dword [ebp - 0x24], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
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 - 0x24], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
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 + 2]
mov dword [ebp - 0x24], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
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 + 3]
mov dword [ebp - 0x24], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
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 - 0x24], edx
mov dword [esi + 8], edi
movzx ebx, byte [ecx + 4]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
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 - 0x24], edx
mov dword [esi + 8], edi
movzx ebx, byte [ecx + 5]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
shld ebx, edi, 8
xor ebx, dword [eax + edx*8 + 4]
shl edi, 8
xor edi, dword [eax + edx*8]
add ecx, 6
sub dword [ebp + 0x1c], 1
mov dword [esi + 8], edi
mov dword [esi + 0xc], ebx
jne 0x1037e30
mov ebx, dword [ebp + 0x20]
mov edx, dword [esi + 0x5c]
mov ecx, dword [ebp - 0xc]
mov eax, dword [edx]
sub ecx, 0xffffff80
xor edx, edx
mov dword [ebp + 0x1c], edx
mov dword [ebp + 8], edx
mov dl, byte [ecx]
mov edi, dword [ebp + 8]
cmp dl, byte [edi + ecx]
jne 0x1037fa5
inc edi
cmp edi, 0x10
mov dword [ebp + 8], edi
jl 0x1037f48
lea edi, [ecx + 1]
mov dword [ebp + 8], edi
mov dword [ebp + 0x18], 0x10
mov edi, dword [ebp + 8]
cmp dl, byte [edi - 1]
je 0x1037f71
inc dword [ebp + 0x1c]
mov edi, dword [ebp + 8]
cmp dl, byte [edi]
je 0x1037f7b
inc dword [ebp + 0x1c]
mov edi, dword [ebp + 8]
cmp dl, byte [edi + 1]
je 0x1037f86
inc dword [ebp + 0x1c]
mov edi, dword [ebp + 8]
cmp dl, byte [edi + 2]
je 0x1037f91
inc dword [ebp + 0x1c]
add dword [ebp + 8], 4
sub dword [ebp + 0x18], 1
jne 0x1037f66
cmp dword [ebp + 0x1c], 4
jl 0x1038063
mov dword [ebp + 0x1c], 0x10
lea esp, [esp]
mov edx, dword [esi + 0xc]
movzx ebx, byte [ecx]
mov edi, dword [esi + 8]
mov dword [ebp - 0x24], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
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 - 0x24], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
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 - 0x24], edx
mov dword [esi + 8], edi
movzx ebx, byte [ecx + 2]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
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 - 0x24], edx
mov dword [esi + 8], edi
movzx ebx, byte [ecx + 3]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
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 + 0x1c], 1
mov dword [esi + 8], edi
mov dword [esi + 0xc], ebx
jne 0x1037fb0
mov ebx, dword [ebp + 0x20]
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp + 0x14]
mov edx, dword [ebp + 0xc]
push eax
mov eax, dword [ebp + 0x2c]
push ecx
mov ecx, dword [ebp + 0x28]
push edx
push ebx
push eax
push ecx
push esi
call fcn.01035c70
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret 0x28
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp + 0x18]
lea edx, [ecx - 0x400]
lea edi, [eax + 0x200]
cmp eax, edx
jbe 0x10380b4
mov edi, ecx
shr edi, 2
cmp edi, 0x1000
jbe 0x10380b4
mov edi, 0x1000
lea edx, [ecx + ecx*4]
mov eax, 0xaaaaaaab
mul edx
shr edx, 2
mov dword [ebp + 8], edx
mov eax, edi
cmp edi, ecx
jae 0x10380e1
lea ebx, [ebx]
mov dl, byte [eax + ebx]
test dl, dl
je 0x10380dc
cmp dl, 0x90
jne 0x10380e1
inc eax
cmp eax, ecx
jb 0x10380d0
add eax, 0x10
cmp eax, ecx
jb 0x10380f8
mov eax, ecx
shr eax, 1
cmp eax, 0x400
jbe 0x10380f8
mov eax, 0x400
mov edi, eax
cmp eax, ecx
jae 0x1038110
mov edi, edi
mov al, byte [edi + ebx]
test al, al
je 0x103810b
cmp al, 0x90
jne 0x1038110
inc edi
cmp edi, ecx
jb 0x1038100
mov dword [ebp - 4], edi
cmp edi, dword [ebp + 8]
jbe 0x103812d
cmp dword [ebp - 0xc], 0
jne 0x1038170
mov eax, ecx
shr eax, 1
sub edi, eax
mov dword [ebp - 0xc], 1
jmp 0x10380c4
mov ecx, dword [ebp + 0xc]
sub ecx, edi
push ecx
lea edx, [edi + ebx]
push edx
call fcn.01034e20
fcomp qword [0x100b7d0]
fnstsw ax
test ah, 5
jp 0x10372e3
cmp dword [ebp - 0xc], 0
jne 0x1038170
lea ecx, [edi + edi]
mov eax, 0xaaaaaaab
mul ecx
mov ecx, dword [ebp + 0xc]
shr edx, 1
sub edi, edx
mov dword [ebp - 0xc], 1
jmp 0x10380c4
pop edi
pop esi
mov eax, 5
pop ebx
mov esp, ebp
pop ebp
ret 0x28
mov ebx, dword [ebp + 0x24]
lea edx, [ebx + ebx]
mov eax, 0xaaaaaaab
mul edx
mov eax, dword [ebp + 0xc]
shr edx, 1
add eax, 0xffffffc0
cmp edx, eax
jbe 0x10381c4
mov eax, 0xaaaaaaab
mul ebx
mov eax, dword [ebp + 0xc]
shr edx, 1
sub eax, edx
cmp eax, 0x100000
jbe 0x10381b1
mov eax, 0x100000
push ecx
mov ecx, dword [ebp + 0x20]
push eax
add edx, ecx
push edx
push edi
call fcn.0102e950
jmp 0x10382e8
mov eax, dword [ebp + 0x20]
mov bl, byte [edx + eax]
add edx, eax
xor eax, eax
mov dword [ebp + 8], edx
mov dword [ebp + 0x1c], eax
cmp bl, byte [eax + edx]
jne 0x1038222
inc eax
cmp eax, 0x10
jl 0x10381d4
lea eax, [edx + 1]
mov dword [ebp + 0x18], 0x10
lea esp, [esp]
cmp bl, byte [eax - 1]
je 0x10381f8
inc dword [ebp + 0x1c]
cmp bl, byte [eax]
je 0x10381ff
inc dword [ebp + 0x1c]
cmp bl, byte [eax + 1]
je 0x1038207
inc dword [ebp + 0x1c]
cmp bl, byte [eax + 2]
je 0x103820f
inc dword [ebp + 0x1c]
add eax, 4
sub dword [ebp + 0x18], 1
jne 0x10381f0
cmp dword [ebp + 0x1c], 4
jl 0x10382e8
mov dword [ebp + 0x1c], 0x10
lea esp, [esp]
mov edx, dword [ecx + 4]
mov ebx, dword [ebp + 8]
movzx ebx, byte [ebx]
mov eax, dword [ecx]
mov dword [ebp - 0x24], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
shld ebx, eax, 8
xor ebx, dword [edi + edx*8 + 4]
shl eax, 8
xor eax, dword [edi + edx*8]
mov dword [ecx + 4], ebx
mov edx, ebx
mov ebx, dword [ebp + 8]
mov dword [ecx], eax
movzx ebx, byte [ebx + 1]
mov dword [ebp - 0x24], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
shld ebx, eax, 8
xor ebx, dword [edi + edx*8 + 4]
shl eax, 8
xor eax, dword [edi + edx*8]
mov dword [ecx + 4], ebx
mov edx, ebx
mov ebx, dword [ebp + 8]
mov dword [ebp - 0x24], edx
mov dword [ecx], eax
movzx ebx, byte [ebx + 2]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
shld ebx, eax, 8
xor ebx, dword [edi + edx*8 + 4]
shl eax, 8
xor eax, dword [edi + edx*8]
mov edx, ebx
mov dword [ecx + 4], ebx
mov ebx, dword [ebp + 8]
add dword [ebp + 8], 4
mov dword [ebp - 0x24], edx
mov dword [ecx], eax
movzx ebx, byte [ebx + 3]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x24]
shld ebx, eax, 8
xor ebx, dword [edi + edx*8 + 4]
shl eax, 8
xor eax, dword [edi + edx*8]
sub dword [ebp + 0x1c], 1
mov dword [ecx], eax
mov dword [ecx + 4], ebx
jne 0x1038230
cmp dword [ebp - 0x14], 0
jne 0x103830c
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp + 0x14]
mov eax, dword [ebp + 0xc]
push ecx
mov ecx, dword [ebp + 0x20]
push edx
push eax
push ecx
mov edx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x28]
push edx
push eax
push esi
call fcn.01035c70
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret 0x28