Function at 0x1082d90
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 0x1082e2d
movzx eax, word [edi + 0x5c]
cmp eax, 9
ja case.0x1082dd7.0
jmp dword [eax*4 + 0x1083a0c]
mov dword [esi + 4], 0x26
jmp 0x1082e34
mov dword [esi + 4], 0x21
mov dword [ebp - 0xc], 3
jmp 0x1082e34
mov dword [esi + 4], 0x22
jmp 0x1082e34
mov dword [esi + 4], 0x23
jmp 0x1082e34
mov dword [esi + 4], 0x25
jmp 0x1082e34
mov dword [esi + 4], 0x1c
jmp 0x1082e34
mov dword [esi + 4], 0x2b
jmp 0x1082e34
mov dword [esi + 4], 0x2c
jmp 0x1082e34
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 0x1082e50
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 0x1082e7a
cmp dword [ebp - 0xc], 2
je 0x1082e74
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.01030060
mov eax, dword [edi + 0x2c]
mov dword [ebp + 0xc], eax
mov ecx, dword [esi + 0x10]
cmp dword [ecx + 0x20], 0x5a584653
je 0x108340a
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 0x1083233
add edi, 0xf8
mov dword [ebp - 8], 0
mov dword [ebp - 0x24], edi
test ecx, ecx
jbe 0x10831b0
mov eax, dword [ebp - 0x2c]
dec eax
cmp dword [ebp - 8], eax
jne 0x1082eff
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 0x1082eff
mov dword [ebp - 0x14], eax
or eax, 0xffffffff
cmp dword [edi + 0x14], eax
je 0x1083940
cmp dword [edi + 0x24], eax
je 0x1083940
mov eax, dword [esi + 0x14]
cmp dword [edi + 0x10], eax
ja 0x1083233
push 4
push 0x100fd2c
push edi
call dword [sym.imp.msvcrt.dll_strncmp]
add esp, 0xc
test eax, eax
je 0x108340a
push 8
push edi
call fcn.01030450
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 0x1082fba
mov ecx, dword [edi + 0x14]
test ecx, ecx
jl 0x1082fba
lea edx, [eax + ecx]
cmp edx, dword [esi + 0x14]
ja 0x1082fba
test edx, edx
jbe 0x1082fba
push eax
mov eax, dword [esi + 0x10]
add eax, ecx
push eax
call fcn.01036420
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 0x1082fcc
cmp dword [esi + 0x30], 0
jne 0x1082fcc
mov dword [esi + 0x30], edi
cmp dword [ebp - 4], 0
jne 0x1083114
mov eax, dword [edi + 0x14]
mov dword [ebp - 4], eax
cmp dword [ebp + 0xc], eax
jae 0x1083114
mov eax, dword [esi + 0x14]
sub eax, 0x20
cmp dword [ebp + 0xc], eax
jae 0x1083114
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 0x108305a
inc edx
cmp edx, 8
jl 0x1083006
lea edx, [ecx + 1]
mov dword [ebp - 0x18], 8
jmp 0x1083022
mov bl, byte [ecx]
cmp bl, byte [edx - 1]
je 0x108302c
inc dword [ebp + 0x10]
mov bl, byte [ecx]
cmp bl, byte [edx]
je 0x1083035
inc dword [ebp + 0x10]
mov bl, byte [ecx]
cmp bl, byte [edx + 1]
je 0x108303f
inc dword [ebp + 0x10]
mov bl, byte [ecx]
cmp bl, byte [edx + 2]
je 0x1083047
inc dword [ebp + 0x10]
add edx, 4
sub dword [ebp - 0x18], 1
jne 0x1083020
cmp dword [ebp + 0x10], 2
jl 0x1083114
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 0x1083061
mov edi, dword [ebp - 0x24]
mov eax, dword [esi + 0x14]
mov ecx, dword [ebp - 4]
add eax, 0xffffffe0
cmp ecx, eax
jae 0x1083145
mov eax, dword [esi + 0x10]
add eax, ecx
mov edx, 0x54584557
cmp dword [eax], edx
je 0x1083220
cmp dword [eax + 4], edx
je 0x1083220
cmp dword [eax + 8], edx
je 0x1083220
mov ebx, dword [edi + 0x10]
add ecx, ebx
cmp dword [ebp - 0x20], 0
mov dword [ebp - 4], ecx
jne 0x108319a
mov edx, dword [edi + 0xc]
mov eax, dword [ebp + 0xc]
cmp edx, eax
ja 0x108319a
lea ecx, [edx + ebx]
cmp ecx, eax
jbe 0x108319a
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 0x1083233
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 0x1082ee0
mov eax, dword [esi + 0x14]
mov ebx, dword [ebp - 4]
cmp ebx, eax
ja 0x1083940
add eax, 0xfffffff0
cmp ebx, eax
jae 0x1083940
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 0x10839e4
push 4
lea ecx, [edi + 8]
push 0x100fd24
push ecx
call dword [sym.imp.msvcrt.dll_strncmp]
add esp, 0xc
test eax, eax
je 0x10839e4
mov eax, dword [edi]
cmp eax, 0x3031424e
je 0x1083940
mov edx, 0x5a4d
cmp ax, dx
je 0x108341d
cmp eax, 0x4643534d
jne 0x1083258
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.010303d0
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret 0xc
cmp eax, 0x21726152
je 0x1083281
cmp eax, 0x6d2a2a2a
jne 0x1083294
mov eax, dword [esi + 0x14]
push 4
push 0x100fd1c
sub eax, ebx
push eax
push edi
call fcn.010363f0
test eax, eax
je 0x108340a
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 0x10833d1
cmp eax, 0x100000
ja 0x10833d1
mov ebx, dword [ebp + 0x10]
push 4
push 0x100fd14
push 0x100
push ebx
call fcn.01029710
test eax, eax
jne 0x10832dc
push 4
push 0x100fd0c
push 0x100
push ebx
call fcn.01029710
sub eax, dword [esi + 0x10]
cmp eax, 0x14
jbe 0x10832ec
cmp eax, edi
jb 0x108341d
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.010295d0
mov al, byte [ebp - 0x2c]
test al, al
je 0x10833d1
mov bl, byte [ebp - 0x2b]
test bl, bl
je 0x10833d1
mov dl, byte [ebp - 0x2a]
test dl, dl
je 0x10833d1
mov cl, byte [ebp - 0x29]
test cl, cl
je 0x10833d1
cmp al, bl
je 0x10833d1
cmp dl, cl
je 0x10833d1
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 0x108335a
mov eax, ebx
push 4
push 0x100fd14
push eax
push edi
call fcn.010363f0
test eax, eax
jne 0x108341d
cmp ebx, 0x80
jbe 0x108337d
mov ebx, 0x80
push 4
push 0x100fd0c
push ebx
push edi
call fcn.010363f0
test eax, eax
jne 0x108341d
mov ecx, dword [ebp - 0x30]
mov eax, edi
sub eax, dword [esi + 0x10]
inc ecx
mov dword [ebp - 0x30], ecx
cmp ecx, 0x14
ja 0x10833d1
mov ecx, dword [esi + 0x14]
sub ecx, eax
cmp ecx, 0x400
jb 0x10833d1
push 4
lea edx, [ebp - 0x2c]
push edx
add ecx, 0xfffffff0
push ecx
add edi, 0x10
push edi
call fcn.010363f0
mov edi, eax
sub eax, dword [esi + 0x10]
test edi, edi
jne 0x1083346
mov edi, dword [esi + 0x14]
sub edi, dword [ebp - 4]
mov dword [ebp - 8], edi
cmp edi, 0x200
jbe 0x1083940
mov eax, edi
cmp edi, 0x400
jb 0x10833f5
mov eax, 0x400
mov ebx, dword [ebp + 0x10]
push 4
push 0x100fd04
push eax
push ebx
call fcn.010363f0
test eax, eax
je 0x1083430
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 0x1083442
fadd qword [0x100b720]
mov ecx, dword [ebp - 4]
fild dword [ebp - 4]
test ecx, ecx
jge 0x1083452
fadd qword [0x100b720]
fdiv qword [0x100fc38]
fcompp
fnstsw ax
test ah, 5
jnp 0x108348f
cmp edi, 0x8000
jbe 0x1083940
push 0x400
lea edx, [ebx + 0x400]
push edx
call fcn.01036420
fcomp qword [0x100efe0]
fnstsw ax
test ah, 0x41
jne 0x1083940
mov eax, 0xaaaaaaab
mul edi
shr edx, 2
push 0x200
add edx, ebx
push edx
call fcn.01036420
fcomp qword [0x100b718]
fnstsw ax
test ah, 0x41
jne 0x1083940
cmp edi, 0x800
jbe 0x10834c9
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 0x1083529
inc edi
cmp edi, 0x10
jl 0x10834e2
lea edi, [edx + 1]
mov dword [ebp - 0x30], 0x10
cmp cl, byte [edi - 1]
je 0x10834ff
inc dword [ebp + 8]
cmp cl, byte [edi]
je 0x1083506
inc dword [ebp + 8]
cmp cl, byte [edi + 1]
je 0x108350e
inc dword [ebp + 8]
cmp cl, byte [edi + 2]
je 0x1083516
inc dword [ebp + 8]
add edi, 4
sub dword [ebp - 0x30], 1
jne 0x10834f7
cmp dword [ebp + 8], 4
jl 0x10835e0
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 0x1083530
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 0x1083642
inc edi
cmp edi, 0x10
jl 0x10835f5
lea edi, [ecx + 1]
mov dword [ebp - 0x30], 0x10
lea ebx, [ebx]
cmp dl, byte [edi - 1]
je 0x1083618
inc dword [ebp + 8]
cmp dl, byte [edi]
je 0x108361f
inc dword [ebp + 8]
cmp dl, byte [edi + 1]
je 0x1083627
inc dword [ebp + 8]
cmp dl, byte [edi + 2]
je 0x108362f
inc dword [ebp + 8]
add edi, 4
sub dword [ebp - 0x30], 1
jne 0x1083610
cmp dword [ebp + 8], 4
jl 0x1083700
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 0x1083650
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 0x1083767
inc edi
cmp edi, 8
jl 0x1083720
lea edi, [edx + 1]
mov dword [ebp - 0x30], 8
cmp cl, byte [edi - 1]
je 0x108373d
inc dword [ebp + 8]
cmp cl, byte [edi]
je 0x1083744
inc dword [ebp + 8]
cmp cl, byte [edi + 1]
je 0x108374c
inc dword [ebp + 8]
cmp cl, byte [edi + 2]
je 0x1083754
inc dword [ebp + 8]
add edi, 4
sub dword [ebp - 0x30], 1
jne 0x1083735
cmp dword [ebp + 8], 2
jl 0x1083820
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 0x1083770
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 0x1083882
inc edi
cmp edi, 4
jl 0x1083834
lea edi, [ecx + 1]
mov dword [ebp + 0x10], 4
lea esp, [esp]
cmp dl, byte [edi - 1]
je 0x1083858
inc dword [ebp + 8]
cmp dl, byte [edi]
je 0x108385f
inc dword [ebp + 8]
cmp dl, byte [edi + 1]
je 0x1083867
inc dword [ebp + 8]
cmp dl, byte [edi + 2]
je 0x108386f
inc dword [ebp + 8]
add edi, 4
sub dword [ebp + 0x10], 1
jne 0x1083850
cmp dword [ebp + 8], 1
jl 0x1083940
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 0x1083890
mov edx, dword [ebp - 0x10]
mov eax, dword [esi + 0x14]
mov ecx, dword [ebp + 0xc]
mov dword [esi + 0x50], eax
test edx, edx
jne 0x108395d
cmp ecx, eax
jae 0x108395d
test ecx, ecx
jbe 0x108395d
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.01038040
mov edx, dword [esi + 0x50]
mov edi, eax
mov dword [esi + 0x14], edx
cmp edi, 0x9641
je 0x10839d6
push esi
call fcn.01037030
cmp edi, 5
jne 0x10839a0
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 0x10839b6
or eax, edx
jne 0x10839d6
mov eax, dword [esi + 0x14]
cmp eax, 0x100000
jbe 0x10839c5
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.0102ff60
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.0102ff60
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret 0xc