Function at 0x10814d0
Capabilities:
Encode data using xor

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x44
mov eax, dword [ebp + 0x10]
push ebx
xor ebx, ebx
push esi
mov esi, dword [ebp + 8]
cmp dword [esi + 4], 0x20
push edi
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x10], ebx
mov dword [ebp - 4], ebx
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x3c], ebx
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x30], ebx
mov dword [ebp - 0x34], ebx
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0xc], 1
mov dword [esi + 0x54], eax
je 0x108156d
movzx eax, word [edi + 0x5c]
cmp eax, 9
ja case.0x1081517.0
jmp dword [eax*4 + 0x108214c]
mov dword [esi + 4], 0x26
jmp 0x1081574
mov dword [esi + 4], 0x21
mov dword [ebp - 0xc], 3
jmp 0x1081574
mov dword [esi + 4], 0x22
jmp 0x1081574
mov dword [esi + 4], 0x23
jmp 0x1081574
mov dword [esi + 4], 0x25
jmp 0x1081574
mov dword [esi + 4], 0x1c
jmp 0x1081574
mov dword [esi + 4], 0x2b
jmp 0x1081574
mov dword [esi + 4], 0x2c
jmp 0x1081574
mov dword [ebp - 0xc], 2
mov ecx, dword [esi + 0x14]
mov eax, dword [edi + 0x2c]
lea edx, [ecx - 0x40]
mov dword [esi + 0x44], eax
cmp eax, edx
jbe 0x1081590
mov eax, 0xaaaaaaab
mul ecx
shr edx, 1
mov dword [esi + 0x44], edx
mov eax, dword [edi + 0x28]
mov dword [ebp + 0xc], eax
cmp eax, ebx
jne 0x10815ba
cmp dword [ebp - 0xc], 2
je 0x10815b4
mov eax, dword [esi + 0x10]
lea edx, [esi + 8]
push edx
push ecx
mov ecx, dword [esi + 0x5c]
mov edx, dword [ecx]
push eax
push edx
call fcn.0102ea50
mov eax, dword [edi + 0x2c]
mov dword [ebp + 0xc], eax
mov ecx, dword [esi + 0x10]
cmp dword [ecx + 0x20], 0x5a584653
je 0x1081b4a
movzx ecx, word [edi + 6]
mov eax, dword [esi + 0x40]
mov edx, dword [edi + 0x34]
mov ebx, dword [esi + 0x14]
xor eax, ebx
xor eax, ecx
xor eax, edx
mov dword [esi + 0x40], eax
mov dword [esi + 0x24], edx
mov edx, dword [edi + 0x2c]
xor edx, eax
mov dword [esi + 0x40], edx
mov eax, dword [edi + 0x30]
xor eax, edx
lea edx, [ecx + ecx*4]
mov dword [esi + 0x40], eax
lea eax, [edx*8 + 0xf8]
mov dword [ebp - 0x2c], ecx
cmp eax, ebx
ja 0x1081973
add edi, 0xf8
mov dword [ebp - 8], 0
mov dword [ebp - 0x24], edi
test ecx, ecx
jbe 0x10818f0
mov eax, dword [ebp - 0x2c]
dec eax
cmp dword [ebp - 8], eax
jne 0x108163f
mov ecx, dword [edi + 0x14]
mov eax, dword [edi + 8]
mov dword [ebp - 0x34], ecx
mov ecx, dword [edi + 0x10]
mov dword [ebp - 0x14], ecx
cmp ecx, eax
jbe 0x108163f
mov dword [ebp - 0x14], eax
or eax, 0xffffffff
cmp dword [edi + 0x14], eax
je 0x1082080
cmp dword [edi + 0x24], eax
je 0x1082080
mov eax, dword [esi + 0x14]
cmp dword [edi + 0x10], eax
ja 0x1081973
push 4
push 0x100fe54
push edi
call dword [sym.imp.msvcrt.dll_strncmp]
add esp, 0xc
test eax, eax
je 0x1081b4a
push 8
push edi
call fcn.0102ee40
movzx edx, ax
xor dword [esi + 0x40], edx
mov ecx, dword [esi + 0x40]
mov eax, dword [edi + 0x24]
xor eax, ecx
mov dword [esi + 0x40], eax
mov ecx, dword [edi + 0x14]
xor ecx, eax
mov dword [esi + 0x40], ecx
mov eax, dword [edi + 0x10]
xor eax, ecx
mov dword [esi + 0x40], eax
mov ebx, dword [edi + 8]
xor ebx, eax
mov dword [esi + 0x40], ebx
mov eax, dword [edi + 0x10]
test eax, eax
jl 0x10816fa
mov ecx, dword [edi + 0x14]
test ecx, ecx
jl 0x10816fa
lea edx, [eax + ecx]
cmp edx, dword [esi + 0x14]
ja 0x10816fa
test edx, edx
jbe 0x10816fa
push eax
mov eax, dword [esi + 0x10]
add eax, ecx
push eax
call fcn.01034e20
fnstcw word [ebp + 0xa]
movzx eax, word [ebp + 0xa]
mov edx, dword [ebp - 8]
or eax, 0xc00
mov dword [ebp + 0x10], eax
inc edx
fldcw word [ebp + 0x10]
fistp qword [ebp - 0x1c]
mov ecx, dword [ebp - 0x1c]
fldcw word [ebp + 0xa]
imul ecx, edx
shl ecx, 0xd
xor ecx, ebx
mov dword [esi + 0x40], ecx
test dword [edi + 0x24], 0x20000000
je 0x108170c
cmp dword [esi + 0x30], 0
jne 0x108170c
mov dword [esi + 0x30], edi
cmp dword [ebp - 4], 0
jne 0x1081854
mov eax, dword [edi + 0x14]
mov dword [ebp - 4], eax
cmp dword [ebp + 0xc], eax
jae 0x1081854
mov eax, dword [esi + 0x14]
sub eax, 0x20
cmp dword [ebp + 0xc], eax
jae 0x1081854
mov edx, dword [esi + 0x5c]
mov ecx, dword [esi + 0x10]
add ecx, dword [ebp + 0xc]
mov eax, dword [edx]
mov bl, byte [ecx]
xor edx, edx
mov dword [ebp + 0x10], edx
cmp bl, byte [edx + ecx]
jne 0x108179a
inc edx
cmp edx, 8
jl 0x1081746
lea edx, [ecx + 1]
mov dword [ebp - 0x18], 8
jmp 0x1081762
mov bl, byte [ecx]
cmp bl, byte [edx - 1]
je 0x108176c
inc dword [ebp + 0x10]
mov bl, byte [ecx]
cmp bl, byte [edx]
je 0x1081775
inc dword [ebp + 0x10]
mov bl, byte [ecx]
cmp bl, byte [edx + 1]
je 0x108177f
inc dword [ebp + 0x10]
mov bl, byte [ecx]
cmp bl, byte [edx + 2]
je 0x1081787
inc dword [ebp + 0x10]
add edx, 4
sub dword [ebp - 0x18], 1
jne 0x1081760
cmp dword [ebp + 0x10], 2
jl 0x1081854
mov dword [ebp + 8], 8
mov edx, dword [esi + 0xc]
movzx ebx, byte [ecx]
mov edi, dword [esi + 8]
mov dword [ebp - 0x40], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x40]
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 - 0x40], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x40]
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 - 0x40], edx
mov dword [esi + 8], edi
movzx ebx, byte [ecx + 2]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x40]
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 - 0x40], edx
mov dword [esi + 8], edi
movzx ebx, byte [ecx + 3]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x40]
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 0x10817a1
mov edi, dword [ebp - 0x24]
mov eax, dword [esi + 0x14]
mov ecx, dword [ebp - 4]
add eax, 0xffffffe0
cmp ecx, eax
jae 0x1081885
mov eax, dword [esi + 0x10]
add eax, ecx
mov edx, 0x54584557
cmp dword [eax], edx
je 0x1081960
cmp dword [eax + 4], edx
je 0x1081960
cmp dword [eax + 8], edx
je 0x1081960
mov ebx, dword [edi + 0x10]
add ecx, ebx
cmp dword [ebp - 0x20], 0
mov dword [ebp - 4], ecx
jne 0x10818da
mov edx, dword [edi + 0xc]
mov eax, dword [ebp + 0xc]
cmp edx, eax
ja 0x10818da
lea ecx, [edx + ebx]
cmp ecx, eax
jbe 0x10818da
mov ecx, dword [edi + 0x14]
mov eax, ecx
sub eax, edx
add eax, dword [ebp + 0xc]
mov edx, dword [esi + 0x14]
add edx, 0xfffffff0
mov dword [ebp - 0x20], 1
mov dword [ebp - 0x10], eax
cmp eax, edx
ja 0x1081973
mov edx, eax
mov dword [esi + 0x1c], ebx
mov dword [esi + 0x28], edx
mov eax, dword [edi + 8]
mov dword [ebp - 0x3c], ebx
mov dword [ebp - 0x38], ecx
mov dword [esi + 0x2c], eax
mov eax, dword [ebp - 8]
inc eax
add edi, 0x28
mov dword [ebp - 8], eax
mov dword [ebp - 0x24], edi
cmp eax, dword [ebp - 0x2c]
jb 0x1081620
mov eax, dword [esi + 0x14]
mov ebx, dword [ebp - 4]
cmp ebx, eax
ja 0x1082080
add eax, 0xfffffff0
cmp ebx, eax
jae 0x1082080
mov edi, dword [esi + 0x10]
add edi, ebx
mov eax, 0x5746
mov dword [esi + 0x3c], ebx
mov dword [ebp + 0x10], edi
cmp word [edi], ax
je 0x1082124
push 4
lea ecx, [edi + 8]
push 0x100fe4c
push ecx
call dword [sym.imp.msvcrt.dll_strncmp]
add esp, 0xc
test eax, eax
je 0x1082124
mov eax, dword [edi]
cmp eax, 0x3031424e
je 0x1082080
mov edx, 0x5a4d
cmp ax, dx
je 0x1081b5d
cmp eax, 0x4643534d
jne 0x1081998
pop edi
mov eax, 0x2e
pop esi
add eax, 0x10000000
pop ebx
mov esp, ebp
pop ebp
ret 0xc
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x10]
lea ecx, [esi + 8]
push ecx
mov ecx, dword [esi + 0x5c]
push edx
mov edx, dword [ecx]
push eax
push edx
call fcn.0102edc0
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret 0xc
cmp eax, 0x21726152
je 0x10819c1
cmp eax, 0x6d2a2a2a
jne 0x10819d4
mov eax, dword [esi + 0x14]
push 4
push 0x100fe44
sub eax, ebx
push eax
push edi
call fcn.01034df0
test eax, eax
je 0x1081b4a
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 0x1081b11
cmp eax, 0x100000
ja 0x1081b11
mov ebx, dword [ebp + 0x10]
push 4
push 0x100fe3c
push 0x100
push ebx
call fcn.01028170
test eax, eax
jne 0x1081a1c
push 4
push 0x100fe34
push 0x100
push ebx
call fcn.01028170
sub eax, dword [esi + 0x10]
cmp eax, 0x14
jbe 0x1081a2c
cmp eax, edi
jb 0x1081b5d
push 4
xor eax, eax
push ebx
lea ecx, [ebp - 0x2c]
push ecx
mov dword [ebp - 0x2c], eax
mov byte [ebp - 0x28], al
call fcn.01028030
mov al, byte [ebp - 0x2c]
test al, al
je 0x1081b11
mov bl, byte [ebp - 0x2b]
test bl, bl
je 0x1081b11
mov dl, byte [ebp - 0x2a]
test dl, dl
je 0x1081b11
mov cl, byte [ebp - 0x29]
test cl, cl
je 0x1081b11
cmp al, bl
je 0x1081b11
cmp dl, cl
je 0x1081b11
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 0x1081a9a
mov eax, ebx
push 4
push 0x100fe3c
push eax
push edi
call fcn.01034df0
test eax, eax
jne 0x1081b5d
cmp ebx, 0x80
jbe 0x1081abd
mov ebx, 0x80
push 4
push 0x100fe34
push ebx
push edi
call fcn.01034df0
test eax, eax
jne 0x1081b5d
mov ecx, dword [ebp - 0x30]
mov eax, edi
sub eax, dword [esi + 0x10]
inc ecx
mov dword [ebp - 0x30], ecx
cmp ecx, 0x14
ja 0x1081b11
mov ecx, dword [esi + 0x14]
sub ecx, eax
cmp ecx, 0x400
jb 0x1081b11
push 4
lea edx, [ebp - 0x2c]
push edx
add ecx, 0xfffffff0
push ecx
add edi, 0x10
push edi
call fcn.01034df0
mov edi, eax
sub eax, dword [esi + 0x10]
test edi, edi
jne 0x1081a86
mov edi, dword [esi + 0x14]
sub edi, dword [ebp - 4]
mov dword [ebp - 8], edi
cmp edi, 0x200
jbe 0x1082080
mov eax, edi
cmp edi, 0x400
jb 0x1081b35
mov eax, 0x400
mov ebx, dword [ebp + 0x10]
push 4
push 0x100fe2c
push eax
push ebx
call fcn.01034df0
test eax, eax
je 0x1081b70
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 0x1081b82
fadd qword [0x100b838]
mov ecx, dword [ebp - 4]
fild dword [ebp - 4]
test ecx, ecx
jge 0x1081b92
fadd qword [0x100b838]
fdiv qword [0x100fd68]
fcompp
fnstsw ax
test ah, 5
jnp 0x1081bcf
cmp edi, 0x8000
jbe 0x1082080
push 0x400
lea edx, [ebx + 0x400]
push edx
call fcn.01034e20
fcomp qword [0x100f0f8]
fnstsw ax
test ah, 0x41
jne 0x1082080
mov eax, 0xaaaaaaab
mul edi
shr edx, 2
push 0x200
add edx, ebx
push edx
call fcn.01034e20
fcomp qword [0x100b830]
fnstsw ax
test ah, 0x41
jne 0x1082080
cmp edi, 0x800
jbe 0x1081c09
shr edi, 0xa
dec edi
shl edi, 0xa
mov dword [ebp - 8], edi
mov eax, 0xaaaaaaab
mul edi
mov eax, dword [esi + 0x5c]
mov eax, dword [eax]
shr edx, 2
mov cl, byte [edx + ebx]
add edx, ebx
xor edi, edi
mov dword [ebp + 8], edi
cmp cl, byte [edi + edx]
jne 0x1081c69
inc edi
cmp edi, 0x10
jl 0x1081c22
lea edi, [edx + 1]
mov dword [ebp - 0x30], 0x10
cmp cl, byte [edi - 1]
je 0x1081c3f
inc dword [ebp + 8]
cmp cl, byte [edi]
je 0x1081c46
inc dword [ebp + 8]
cmp cl, byte [edi + 1]
je 0x1081c4e
inc dword [ebp + 8]
cmp cl, byte [edi + 2]
je 0x1081c56
inc dword [ebp + 8]
add edi, 4
sub dword [ebp - 0x30], 1
jne 0x1081c37
cmp dword [ebp + 8], 4
jl 0x1081d20
mov dword [ebp + 8], 0x10
mov ecx, dword [esi + 0xc]
movzx ebx, byte [edx]
mov edi, dword [esi + 8]
mov dword [ebp - 0x40], ecx
shr ecx, 0x18
movzx ecx, cl
xor ecx, ebx
mov ebx, dword [ebp - 0x40]
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 - 0x40], ecx
shr ecx, 0x18
movzx ecx, cl
xor ecx, ebx
mov ebx, dword [ebp - 0x40]
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 - 0x40], ecx
mov dword [esi + 8], edi
movzx ebx, byte [edx + 2]
shr ecx, 0x18
movzx ecx, cl
xor ecx, ebx
mov ebx, dword [ebp - 0x40]
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 - 0x40], ecx
mov dword [esi + 8], edi
movzx ebx, byte [edx + 3]
shr ecx, 0x18
movzx ecx, cl
xor ecx, ebx
mov ebx, dword [ebp - 0x40]
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 0x1081c70
mov ecx, dword [ebp - 8]
mov edx, dword [esi + 0x5c]
mov eax, dword [edx]
shr ecx, 2
add ecx, dword [ebp + 0x10]
xor edi, edi
mov dl, byte [ecx]
mov dword [ebp + 8], edi
cmp dl, byte [edi + ecx]
jne 0x1081d82
inc edi
cmp edi, 0x10
jl 0x1081d35
lea edi, [ecx + 1]
mov dword [ebp - 0x30], 0x10
lea ebx, [ebx]
cmp dl, byte [edi - 1]
je 0x1081d58
inc dword [ebp + 8]
cmp dl, byte [edi]
je 0x1081d5f
inc dword [ebp + 8]
cmp dl, byte [edi + 1]
je 0x1081d67
inc dword [ebp + 8]
cmp dl, byte [edi + 2]
je 0x1081d6f
inc dword [ebp + 8]
add edi, 4
sub dword [ebp - 0x30], 1
jne 0x1081d50
cmp dword [ebp + 8], 4
jl 0x1081e40
mov dword [ebp + 8], 0x10
lea esp, [esp]
mov edx, dword [esi + 0xc]
movzx ebx, byte [ecx]
mov edi, dword [esi + 8]
mov dword [ebp - 0x40], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x40]
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 - 0x40], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x40]
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 - 0x40], edx
mov dword [esi + 8], edi
movzx ebx, byte [ecx + 2]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x40]
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 - 0x40], edx
mov dword [esi + 8], edi
movzx ebx, byte [ecx + 3]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x40]
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 0x1081d90
mov eax, 0xaaaaaaab
mul dword [ebp - 8]
mov eax, dword [esi + 0x5c]
mov eax, dword [eax]
shr edx, 1
add edx, dword [ebp + 0x10]
xor edi, edi
mov cl, byte [edx]
mov dword [ebp + 8], edi
lea esp, [esp]
cmp cl, byte [edi + edx]
jne 0x1081ea7
inc edi
cmp edi, 8
jl 0x1081e60
lea edi, [edx + 1]
mov dword [ebp - 0x30], 8
cmp cl, byte [edi - 1]
je 0x1081e7d
inc dword [ebp + 8]
cmp cl, byte [edi]
je 0x1081e84
inc dword [ebp + 8]
cmp cl, byte [edi + 1]
je 0x1081e8c
inc dword [ebp + 8]
cmp cl, byte [edi + 2]
je 0x1081e94
inc dword [ebp + 8]
add edi, 4
sub dword [ebp - 0x30], 1
jne 0x1081e75
cmp dword [ebp + 8], 2
jl 0x1081f60
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 - 0x40], ecx
shr ecx, 0x18
movzx ecx, cl
xor ecx, ebx
mov ebx, dword [ebp - 0x40]
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 - 0x40], ecx
shr ecx, 0x18
movzx ecx, cl
xor ecx, ebx
mov ebx, dword [ebp - 0x40]
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 - 0x40], ecx
mov dword [esi + 8], edi
movzx ebx, byte [edx + 2]
shr ecx, 0x18
movzx ecx, cl
xor ecx, ebx
mov ebx, dword [ebp - 0x40]
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 - 0x40], ecx
mov dword [esi + 8], edi
movzx ebx, byte [edx + 3]
shr ecx, 0x18
movzx ecx, cl
xor ecx, ebx
mov ebx, dword [ebp - 0x40]
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 0x1081eb0
mov ecx, dword [ebp - 8]
mov edx, dword [esi + 0x5c]
mov eax, dword [edx]
shr ecx, 1
add ecx, dword [ebp + 0x10]
xor edi, edi
mov dl, byte [ecx]
mov dword [ebp + 8], edi
cmp dl, byte [edi + ecx]
jne 0x1081fc2
inc edi
cmp edi, 4
jl 0x1081f74
lea edi, [ecx + 1]
mov dword [ebp + 0x10], 4
lea esp, [esp]
cmp dl, byte [edi - 1]
je 0x1081f98
inc dword [ebp + 8]
cmp dl, byte [edi]
je 0x1081f9f
inc dword [ebp + 8]
cmp dl, byte [edi + 1]
je 0x1081fa7
inc dword [ebp + 8]
cmp dl, byte [edi + 2]
je 0x1081faf
inc dword [ebp + 8]
add edi, 4
sub dword [ebp + 0x10], 1
jne 0x1081f90
cmp dword [ebp + 8], 1
jl 0x1082080
mov dword [ebp + 8], 4
lea esp, [esp]
mov edx, dword [esi + 0xc]
movzx ebx, byte [ecx]
mov edi, dword [esi + 8]
mov dword [ebp - 0x40], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x40]
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 - 0x40], edx
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x40]
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 - 0x40], edx
mov dword [esi + 8], edi
movzx ebx, byte [ecx + 2]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x40]
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 - 0x40], edx
mov dword [esi + 8], edi
movzx ebx, byte [ecx + 3]
shr edx, 0x18
movzx edx, dl
xor edx, ebx
mov ebx, dword [ebp - 0x40]
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 0x1081fd0
mov edx, dword [ebp - 0x10]
mov eax, dword [esi + 0x14]
mov ecx, dword [ebp + 0xc]
mov dword [esi + 0x50], eax
test edx, edx
jne 0x108209d
cmp ecx, eax
jae 0x108209d
test ecx, ecx
jbe 0x108209d
mov dword [esi + 0x28], ecx
mov edx, ecx
mov edi, dword [ebp - 0x14]
push edi
mov edi, dword [ebp - 0x34]
push edi
mov edi, dword [ebp - 0xc]
push edi
mov edi, dword [esi + 0x10]
push edi
push edx
mov edx, dword [ebp - 0x38]
push ecx
mov ecx, dword [ebp - 0x3c]
push edx
push ecx
push eax
push esi
call fcn.01036a40
mov edx, dword [esi + 0x50]
mov edi, eax
mov dword [esi + 0x14], edx
cmp edi, 0x9641
je 0x1082116
push esi
call fcn.01035a30
cmp edi, 5
jne 0x10820e0
mov dword [esi + 0x48], 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 0x10820f6
or eax, edx
jne 0x1082116
mov eax, dword [esi + 0x14]
cmp eax, 0x100000
jbe 0x1082105
mov eax, 0x100000
push ecx
mov ecx, dword [esi + 0x5c]
mov edx, dword [ecx]
push eax
mov eax, dword [esi + 0x10]
push eax
push edx
call fcn.0102e950
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 + 0x5c]
push ecx
mov ecx, dword [eax]
push edx
push ecx
call fcn.0102e950
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret 0xc