Function at 0x1088150
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 0x10881ed
movzx eax, word [edi + 0x5c]
cmp eax, 9
ja case.0x1088197.0
jmp dword [eax*4 + 0x1088dcc]
mov dword [esi + 4], 0x26
jmp 0x10881f4
mov dword [esi + 4], 0x21
mov dword [ebp - 0xc], 3
jmp 0x10881f4
mov dword [esi + 4], 0x22
jmp 0x10881f4
mov dword [esi + 4], 0x23
jmp 0x10881f4
mov dword [esi + 4], 0x25
jmp 0x10881f4
mov dword [esi + 4], 0x1c
jmp 0x10881f4
mov dword [esi + 4], 0x2b
jmp 0x10881f4
mov dword [esi + 4], 0x2c
jmp 0x10881f4
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 0x1088210
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 0x108823a
cmp dword [ebp - 0xc], 2
je 0x1088234
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.01031940
mov eax, dword [edi + 0x2c]
mov dword [ebp + 0xc], eax
mov ecx, dword [esi + 0x10]
cmp dword [ecx + 0x20], 0x5a584653
je 0x10887ca
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 0x10885f3
add edi, 0xf8
mov dword [ebp - 8], 0
mov dword [ebp - 0x24], edi
test ecx, ecx
jbe 0x1088570
mov eax, dword [ebp - 0x2c]
dec eax
cmp dword [ebp - 8], eax
jne 0x10882bf
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 0x10882bf
mov dword [ebp - 0x14], eax
or eax, 0xffffffff
cmp dword [edi + 0x14], eax
je 0x1088d00
cmp dword [edi + 0x24], eax
je 0x1088d00
mov eax, dword [esi + 0x14]
cmp dword [edi + 0x10], eax
ja 0x10885f3
push 4
push 0x1010a74
push edi
call dword [sym.imp.msvcrt.dll_strncmp]
add esp, 0xc
test eax, eax
je 0x10887ca
push 8
push edi
call fcn.01031d30
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 0x108837a
mov ecx, dword [edi + 0x14]
test ecx, ecx
jl 0x108837a
lea edx, [eax + ecx]
cmp edx, dword [esi + 0x14]
ja 0x108837a
test edx, edx
jbe 0x108837a
push eax
mov eax, dword [esi + 0x10]
add eax, ecx
push eax
call fcn.01037d10
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 0x108838c
cmp dword [esi + 0x30], 0
jne 0x108838c
mov dword [esi + 0x30], edi
cmp dword [ebp - 4], 0
jne 0x10884d4
mov eax, dword [edi + 0x14]
mov dword [ebp - 4], eax
cmp dword [ebp + 0xc], eax
jae 0x10884d4
mov eax, dword [esi + 0x14]
sub eax, 0x20
cmp dword [ebp + 0xc], eax
jae 0x10884d4
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 0x108841a
inc edx
cmp edx, 8
jl 0x10883c6
lea edx, [ecx + 1]
mov dword [ebp - 0x18], 8
jmp 0x10883e2
mov bl, byte [ecx]
cmp bl, byte [edx - 1]
je 0x10883ec
inc dword [ebp + 0x10]
mov bl, byte [ecx]
cmp bl, byte [edx]
je 0x10883f5
inc dword [ebp + 0x10]
mov bl, byte [ecx]
cmp bl, byte [edx + 1]
je 0x10883ff
inc dword [ebp + 0x10]
mov bl, byte [ecx]
cmp bl, byte [edx + 2]
je 0x1088407
inc dword [ebp + 0x10]
add edx, 4
sub dword [ebp - 0x18], 1
jne 0x10883e0
cmp dword [ebp + 0x10], 2
jl 0x10884d4
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 0x1088421
mov edi, dword [ebp - 0x24]
mov eax, dword [esi + 0x14]
mov ecx, dword [ebp - 4]
add eax, 0xffffffe0
cmp ecx, eax
jae 0x1088505
mov eax, dword [esi + 0x10]
add eax, ecx
mov edx, 0x54584557
cmp dword [eax], edx
je 0x10885e0
cmp dword [eax + 4], edx
je 0x10885e0
cmp dword [eax + 8], edx
je 0x10885e0
mov ebx, dword [edi + 0x10]
add ecx, ebx
cmp dword [ebp - 0x20], 0
mov dword [ebp - 4], ecx
jne 0x108855a
mov edx, dword [edi + 0xc]
mov eax, dword [ebp + 0xc]
cmp edx, eax
ja 0x108855a
lea ecx, [edx + ebx]
cmp ecx, eax
jbe 0x108855a
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 0x10885f3
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 0x10882a0
mov eax, dword [esi + 0x14]
mov ebx, dword [ebp - 4]
cmp ebx, eax
ja 0x1088d00
add eax, 0xfffffff0
cmp ebx, eax
jae 0x1088d00
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 0x1088da4
push 4
lea ecx, [edi + 8]
push 0x1010a6c
push ecx
call dword [sym.imp.msvcrt.dll_strncmp]
add esp, 0xc
test eax, eax
je 0x1088da4
mov eax, dword [edi]
cmp eax, 0x3031424e
je 0x1088d00
mov edx, 0x5a4d
cmp ax, dx
je 0x10887dd
cmp eax, 0x4643534d
jne 0x1088618
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.01031cb0
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret 0xc
cmp eax, 0x21726152
je 0x1088641
cmp eax, 0x6d2a2a2a
jne 0x1088654
mov eax, dword [esi + 0x14]
push 4
push 0x1010a64
sub eax, ebx
push eax
push edi
call fcn.01037ce0
test eax, eax
je 0x10887ca
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 0x1088791
cmp eax, 0x100000
ja 0x1088791
mov ebx, dword [ebp + 0x10]
push 4
push 0x1010a5c
push pe_nt_image_headers32
push ebx
call fcn.0102af10
test eax, eax
jne 0x108869c
push 4
push 0x1010a54
push pe_nt_image_headers32
push ebx
call fcn.0102af10
sub eax, dword [esi + 0x10]
cmp eax, 0x14
jbe 0x10886ac
cmp eax, edi
jb 0x10887dd
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.0102ada0
mov al, byte [ebp - 0x2c]
test al, al
je 0x1088791
mov bl, byte [ebp - 0x2b]
test bl, bl
je 0x1088791
mov dl, byte [ebp - 0x2a]
test dl, dl
je 0x1088791
mov cl, byte [ebp - 0x29]
test cl, cl
je 0x1088791
cmp al, bl
je 0x1088791
cmp dl, cl
je 0x1088791
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 0x108871a
mov eax, ebx
push 4
push 0x1010a5c
push eax
push edi
call fcn.01037ce0
test eax, eax
jne 0x10887dd
cmp ebx, 0x80
jbe 0x108873d
mov ebx, 0x80
push 4
push 0x1010a54
push ebx
push edi
call fcn.01037ce0
test eax, eax
jne 0x10887dd
mov ecx, dword [ebp - 0x30]
mov eax, edi
sub eax, dword [esi + 0x10]
inc ecx
mov dword [ebp - 0x30], ecx
cmp ecx, 0x14
ja 0x1088791
mov ecx, dword [esi + 0x14]
sub ecx, eax
cmp ecx, 0x400
jb 0x1088791
push 4
lea edx, [ebp - 0x2c]
push edx
add ecx, 0xfffffff0
push ecx
add edi, 0x10
push edi
call fcn.01037ce0
mov edi, eax
sub eax, dword [esi + 0x10]
test edi, edi
jne 0x1088706
mov edi, dword [esi + 0x14]
sub edi, dword [ebp - 4]
mov dword [ebp - 8], edi
cmp edi, 0x200
jbe 0x1088d00
mov eax, edi
cmp edi, 0x400
jb 0x10887b5
mov eax, 0x400
mov ebx, dword [ebp + 0x10]
push 4
push 0x1010a4c
push eax
push ebx
call fcn.01037ce0
test eax, eax
je 0x10887f0
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 0x1088802
fadd qword [0x100c218]
mov ecx, dword [ebp - 4]
fild dword [ebp - 4]
test ecx, ecx
jge 0x1088812
fadd qword [0x100c218]
fdiv qword [0x1010988]
fcompp
fnstsw ax
test ah, 5
jnp 0x108884f
cmp edi, 0x8000
jbe 0x1088d00
push 0x400
lea edx, [ebx + 0x400]
push edx
call fcn.01037d10
fcomp qword [0x100fb68]
fnstsw ax
test ah, 0x41
jne 0x1088d00
mov eax, 0xaaaaaaab
mul edi
shr edx, 2
push 0x200
add edx, ebx
push edx
call fcn.01037d10
fcomp qword [0x100c210]
fnstsw ax
test ah, 0x41
jne 0x1088d00
cmp edi, 0x800
jbe 0x1088889
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 0x10888e9
inc edi
cmp edi, 0x10
jl 0x10888a2
lea edi, [edx + 1]
mov dword [ebp - 0x30], 0x10
cmp cl, byte [edi - 1]
je 0x10888bf
inc dword [ebp + 8]
cmp cl, byte [edi]
je 0x10888c6
inc dword [ebp + 8]
cmp cl, byte [edi + 1]
je 0x10888ce
inc dword [ebp + 8]
cmp cl, byte [edi + 2]
je 0x10888d6
inc dword [ebp + 8]
add edi, 4
sub dword [ebp - 0x30], 1
jne 0x10888b7
cmp dword [ebp + 8], 4
jl 0x10889a0
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 0x10888f0
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 0x1088a02
inc edi
cmp edi, 0x10
jl 0x10889b5
lea edi, [ecx + 1]
mov dword [ebp - 0x30], 0x10
lea ebx, [ebx]
cmp dl, byte [edi - 1]
je 0x10889d8
inc dword [ebp + 8]
cmp dl, byte [edi]
je 0x10889df
inc dword [ebp + 8]
cmp dl, byte [edi + 1]
je 0x10889e7
inc dword [ebp + 8]
cmp dl, byte [edi + 2]
je 0x10889ef
inc dword [ebp + 8]
add edi, 4
sub dword [ebp - 0x30], 1
jne 0x10889d0
cmp dword [ebp + 8], 4
jl 0x1088ac0
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 0x1088a10
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 0x1088b27
inc edi
cmp edi, 8
jl 0x1088ae0
lea edi, [edx + 1]
mov dword [ebp - 0x30], 8
cmp cl, byte [edi - 1]
je 0x1088afd
inc dword [ebp + 8]
cmp cl, byte [edi]
je 0x1088b04
inc dword [ebp + 8]
cmp cl, byte [edi + 1]
je 0x1088b0c
inc dword [ebp + 8]
cmp cl, byte [edi + 2]
je 0x1088b14
inc dword [ebp + 8]
add edi, 4
sub dword [ebp - 0x30], 1
jne 0x1088af5
cmp dword [ebp + 8], 2
jl 0x1088be0
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 0x1088b30
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 0x1088c42
inc edi
cmp edi, 4
jl 0x1088bf4
lea edi, [ecx + 1]
mov dword [ebp + 0x10], 4
lea esp, [esp]
cmp dl, byte [edi - 1]
je 0x1088c18
inc dword [ebp + 8]
cmp dl, byte [edi]
je 0x1088c1f
inc dword [ebp + 8]
cmp dl, byte [edi + 1]
je 0x1088c27
inc dword [ebp + 8]
cmp dl, byte [edi + 2]
je 0x1088c2f
inc dword [ebp + 8]
add edi, 4
sub dword [ebp + 0x10], 1
jne 0x1088c10
cmp dword [ebp + 8], 1
jl 0x1088d00
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 0x1088c50
mov edx, dword [ebp - 0x10]
mov eax, dword [esi + 0x14]
mov ecx, dword [ebp + 0xc]
mov dword [esi + 0x50], eax
test edx, edx
jne 0x1088d1d
cmp ecx, eax
jae 0x1088d1d
test ecx, ecx
jbe 0x1088d1d
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.01039930
mov edx, dword [esi + 0x50]
mov edi, eax
mov dword [esi + 0x14], edx
cmp edi, 0x9641
je 0x1088d96
push esi
call fcn.01038920
cmp edi, 5
jne 0x1088d60
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 0x1088d76
or eax, edx
jne 0x1088d96
mov eax, dword [esi + 0x14]
cmp eax, 0x100000
jbe 0x1088d85
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.01031840
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.01031840
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret 0xc