Function at 0x10081243
Capabilities:
Encrypt data using rc4 prga

Disassembly:
sub esp, 0x4c
mov eax, dword [esp + 0x50]
push ebx
push ebp
push esi
push edi
mov edi, dword [eax + 0xc]
mov eax, dword [eax + 8]
mov esi, ecx
mov dword [esp + 0x10], 0x17d7840
mov dword [esp + 0x18], edi
mov dword [esp + 0x14], eax
mov eax, dword [edi]
cmp eax, 0x36
ja case.0x10080dae.39
jmp dword [eax*4 + 0x10081bc0]
lea ecx, [edi + 0x14]
push ecx
mov ecx, esi
call fcn.10080c10
lea edx, [edi + 8]
push eax
push edx
mov ecx, esi
call fcn.10080c50
mov eax, dword [esp + 0x10]
add edi, 0x20
dec eax
mov dword [esp + 0x10], eax
jmp 0x10080da3
lea eax, [edi + 0x14]
mov ecx, esi
push eax
call fcn.10080c90
lea ecx, [edi + 8]
push eax
push ecx
mov ecx, esi
call fcn.10080cd0
mov eax, dword [esp + 0x10]
add edi, 0x20
dec eax
mov dword [esp + 0x10], eax
jmp 0x10080da3
lea edx, [edi + 8]
mov ecx, esi
push edx
call fcn.10080c10
mov ebx, eax
lea eax, [edi + 0x14]
push eax
mov ecx, esi
call fcn.10080c10
mov ecx, ebx
sub ecx, eax
jne 0x10080e36
mov eax, 2
add edi, 0x20
mov dword [esi + 0x28], eax
mov eax, dword [esp + 0x10]
dec eax
mov dword [esp + 0x10], eax
jmp 0x10080da3
cmp ebx, ecx
sbb eax, eax
and ecx, 0x80000000
neg eax
or eax, ecx
add edi, 0x20
mov dword [esi + 0x28], eax
mov eax, dword [esp + 0x10]
dec eax
mov dword [esp + 0x10], eax
jmp 0x10080da3
lea ecx, [edi + 8]
push ecx
mov ecx, esi
call fcn.10080c90
lea edx, [edi + 0x14]
mov ecx, esi
push edx
mov bl, al
call fcn.10080c90
mov cl, bl
sub cl, al
mov byte [esp + 0x48], cl
jne 0x10080e93
mov eax, 2
add edi, 0x20
mov dword [esi + 0x28], eax
mov eax, dword [esp + 0x10]
dec eax
mov dword [esp + 0x10], eax
jmp 0x10080da3
cmp bl, cl
mov ecx, dword [esp + 0x48]
sbb eax, eax
and ecx, 0xff
and ecx, 0xffffff80
add edi, 0x20
neg eax
shl ecx, 0x18
or eax, ecx
mov dword [esi + 0x28], eax
mov eax, dword [esp + 0x10]
dec eax
mov dword [esp + 0x10], eax
jmp 0x10080da3
lea ebp, [edi + 8]
mov ecx, esi
push ebp
call fcn.10080c10
lea edx, [edi + 0x14]
mov ecx, esi
push edx
mov dword [esp + 0x64], eax
call fcn.10080c10
mov ebx, eax
mov eax, dword [esp + 0x60]
add ebx, eax
mov ecx, esi
push ebx
push ebp
call fcn.10080c50
test ebx, ebx
jne 0x10080f13
mov ebp, dword [esp + 0x60]
mov eax, 2
cmp ebx, ebp
sbb ecx, ecx
add edi, 0x20
neg ecx
or ecx, eax
mov eax, dword [esp + 0x10]
dec eax
mov dword [esi + 0x28], ecx
mov dword [esp + 0x10], eax
jmp 0x10080da3
mov ebp, dword [esp + 0x60]
mov eax, ebx
and eax, 0x80000000
cmp ebx, ebp
sbb ecx, ecx
add edi, 0x20
neg ecx
or ecx, eax
mov eax, dword [esp + 0x10]
dec eax
mov dword [esi + 0x28], ecx
mov dword [esp + 0x10], eax
jmp 0x10080da3
lea eax, [edi + 8]
mov ecx, esi
push eax
call fcn.10080c90
lea edx, [edi + 0x14]
mov ecx, esi
push edx
mov byte [esp + 0x64], al
call fcn.10080c90
mov bl, al
mov al, byte [esp + 0x60]
add bl, al
lea eax, [edi + 8]
mov byte [esp + 0x4c], bl
mov ecx, esi
mov ebp, dword [esp + 0x4c]
push ebp
push eax
call fcn.10080cd0
test bl, bl
jne 0x10080f99
mov al, byte [esp + 0x60]
mov ebp, 2
cmp bl, al
sbb eax, eax
add edi, 0x20
neg eax
or eax, ebp
mov dword [esi + 0x28], eax
mov eax, dword [esp + 0x10]
dec eax
mov dword [esp + 0x10], eax
jmp 0x10080da3
mov al, byte [esp + 0x60]
and ebp, 0xff
and ebp, 0xffffff80
shl ebp, 0x18
cmp bl, al
sbb eax, eax
add edi, 0x20
neg eax
or eax, ebp
mov dword [esi + 0x28], eax
mov eax, dword [esp + 0x10]
dec eax
mov dword [esp + 0x10], eax
jmp 0x10080da3
mov cl, byte [edi + 4]
lea eax, [edi + 8]
push eax
push ecx
mov ecx, esi
call fcn.10080d20
mov ebp, dword [esi + 0x28]
mov dword [esp + 0x60], eax
mov al, byte [edi + 4]
lea edx, [edi + 0x14]
push edx
push eax
mov ecx, esi
and ebp, 1
call fcn.10080d20
mov edx, dword [esp + 0x60]
mov ebx, eax
mov al, byte [edi + 4]
add ebx, ebp
add ebx, edx
test al, al
je 0x10081004
and ebx, 0xff
lea ecx, [edi + 8]
push ebx
push ecx
push eax
mov ecx, esi
call fcn.10080d50
mov eax, dword [esp + 0x60]
cmp ebx, eax
jb 0x1008113c
jmp 0x10081130
lea ebp, [edi + 8]
mov ecx, esi
push ebp
call fcn.10080c10
lea ecx, [edi + 0x14]
mov ebx, eax
push ecx
mov ecx, esi
mov dword [esp + 0x64], ebx
call fcn.10080c10
sub ebx, eax
mov ecx, esi
push ebx
push ebp
call fcn.10080c50
test ebx, ebx
jne 0x10081066
mov eax, 2
add edi, 0x20
mov dword [esi + 0x28], eax
mov eax, dword [esp + 0x10]
dec eax
mov dword [esp + 0x10], eax
jmp 0x10080da3
mov eax, dword [esp + 0x60]
jmp 0x100810be
lea ebp, [edi + 8]
mov ecx, esi
push ebp
call fcn.10080c90
and eax, 0xff
lea edx, [edi + 0x14]
mov ebx, eax
push edx
mov ecx, esi
mov dword [esp + 0x64], ebx
call fcn.10080c90
and eax, 0xff
mov ecx, esi
sub ebx, eax
push ebx
push ebp
call fcn.10080cd0
test ebx, ebx
jne 0x100810ba
mov eax, 2
add edi, 0x20
mov dword [esi + 0x28], eax
mov eax, dword [esp + 0x10]
dec eax
mov dword [esp + 0x10], eax
jmp 0x10080da3
mov eax, dword [esp + 0x60]
cmp eax, ebx
sbb eax, eax
and ebx, 0x80000000
neg eax
or eax, ebx
add edi, 0x20
mov dword [esi + 0x28], eax
mov eax, dword [esp + 0x10]
dec eax
mov dword [esp + 0x10], eax
jmp 0x10080da3
lea eax, [edi + 8]
mov ecx, esi
push eax
mov al, byte [edi + 4]
push eax
call fcn.10080d20
mov dl, byte [edi + 4]
mov ebp, dword [esi + 0x28]
lea ecx, [edi + 0x14]
mov ebx, eax
push ecx
push edx
mov ecx, esi
mov dword [esp + 0x68], ebx
and ebp, 1
call fcn.10080d20
sub ebx, ebp
sub ebx, eax
mov al, byte [edi + 4]
test al, al
je 0x1008111b
and ebx, 0xff
lea ecx, [edi + 8]
push ebx
push ecx
push eax
mov ecx, esi
call fcn.10080d50
mov eax, dword [esp + 0x60]
cmp ebx, eax
ja 0x1008113c
cmp ebx, eax
jne 0x10081138
test ebp, ebp
jne 0x1008113c
xor eax, eax
jmp 0x10081141
mov eax, 1
test ebx, ebx
jne 0x10081160
mov ebx, 2
add edi, 0x20
or ebx, eax
mov eax, dword [esp + 0x10]
dec eax
mov dword [esi + 0x28], ebx
mov dword [esp + 0x10], eax
jmp 0x10080da3
and ebx, 0x80000000
add edi, 0x20
or ebx, eax
mov eax, dword [esp + 0x10]
dec eax
mov dword [esi + 0x28], ebx
mov dword [esp + 0x10], eax
jmp 0x10080da3
lea ebp, [edi + 8]
mov ecx, esi
push ebp
call fcn.10080c10
mov ebx, eax
inc ebx
jmp 0x10081315
lea ebp, [edi + 8]
mov ecx, esi
push ebp
call fcn.10080c90
inc al
mov ecx, esi
mov byte [esp + 0x1c], al
mov ebx, dword [esp + 0x1c]
push ebx
push ebp
call fcn.10080cd0
mov al, bl
test al, al
jne 0x10081389
mov eax, dword [esp + 0x10]
add edi, 0x20
mov ebx, 2
dec eax
mov dword [esi + 0x28], ebx
mov dword [esp + 0x10], eax
jmp 0x10080da3
lea ebp, [edi + 8]
mov ecx, esi
push ebp
call fcn.10080c10
mov ebx, eax
dec ebx
jmp 0x10081315
lea ebp, [edi + 8]
mov ecx, esi
push ebp
call fcn.10080c90
dec al
mov ecx, esi
mov byte [esp + 0x20], al
mov ebx, dword [esp + 0x20]
push ebx
push ebp
call fcn.10080cd0
mov al, bl
test al, al
jne 0x10081389
mov eax, dword [esp + 0x10]
add edi, 0x20
mov ebx, 2
dec eax
mov dword [esi + 0x28], ebx
mov dword [esp + 0x10], eax
jmp 0x10080da3
lea eax, [edi + 0x14]
mov ecx, esi
push eax
lea ebp, [edi + 8]
call fcn.10080c10
push ebp
mov ecx, esi
mov ebx, eax
call fcn.10080c10
xor ebx, eax
jmp 0x10081315
lea ecx, [edi + 0x14]
lea ebp, [edi + 8]
push ecx
mov ecx, esi
call fcn.10080c90
push ebp
mov ecx, esi
mov bl, al
call fcn.10080c90
xor bl, al
mov ecx, esi
mov byte [esp + 0x24], bl
mov ebx, dword [esp + 0x24]
push ebx
push ebp
call fcn.10080cd0
mov al, bl
test al, al
jne 0x10081389
mov eax, dword [esp + 0x10]
add edi, 0x20
mov ebx, 2
dec eax
mov dword [esi + 0x28], ebx
mov dword [esp + 0x10], eax
jmp 0x10080da3
lea edx, [edi + 0x14]
mov ecx, esi
push edx
lea ebp, [edi + 8]
call fcn.10080c10
push ebp
mov ecx, esi
mov ebx, eax
call fcn.10080c10
and ebx, eax
jmp 0x10081315
lea eax, [edi + 0x14]
mov ecx, esi
push eax
lea ebp, [edi + 8]
call fcn.10080c90
push ebp
mov ecx, esi
mov bl, al
call fcn.10080c90
and bl, al
mov ecx, esi
mov byte [esp + 0x28], bl
mov ebx, dword [esp + 0x28]
push ebx
push ebp
call fcn.10080cd0
mov al, bl
test al, al
jne 0x10081389
mov eax, dword [esp + 0x10]
add edi, 0x20
mov ebx, 2
dec eax
mov dword [esi + 0x28], ebx
mov dword [esp + 0x10], eax
jmp 0x10080da3
lea ecx, [edi + 0x14]
lea ebp, [edi + 8]
push ecx
mov ecx, esi
call fcn.10080c10
push ebp
mov ecx, esi
mov ebx, eax
call fcn.10080c10
or ebx, eax
push ebx
push ebp
mov ecx, esi
call fcn.10080c50
test ebx, ebx
jne 0x100813de
mov eax, dword [esp + 0x10]
add edi, 0x20
mov ebx, 2
dec eax
mov dword [esi + 0x28], ebx
mov dword [esp + 0x10], eax
jmp 0x10080da3
lea edx, [edi + 0x14]
mov ecx, esi
push edx
lea ebp, [edi + 8]
call fcn.10080c90
push ebp
mov ecx, esi
mov bl, al
call fcn.10080c90
or bl, al
mov ecx, esi
mov byte [esp + 0x2c], bl
mov ebx, dword [esp + 0x2c]
push ebx
push ebp
call fcn.10080cd0
mov al, bl
test al, al
jne 0x10081389
mov eax, dword [esp + 0x10]
add edi, 0x20
mov ebx, 2
dec eax
mov dword [esi + 0x28], ebx
mov dword [esp + 0x10], eax
jmp 0x10080da3
mov eax, dword [esp + 0x10]
and ebx, 0xff
and ebx, 0xffffff80
add edi, 0x20
shl ebx, 0x18
dec eax
mov dword [esi + 0x28], ebx
mov dword [esp + 0x10], eax
jmp 0x10080da3
lea eax, [edi + 0x14]
mov ecx, esi
push eax
call fcn.10080c10
lea ecx, [edi + 8]
mov ebx, eax
push ecx
mov ecx, esi
call fcn.10080c10
and ebx, eax
jne 0x100813de
mov eax, dword [esp + 0x10]
add edi, 0x20
mov ebx, 2
dec eax
mov dword [esi + 0x28], ebx
mov dword [esp + 0x10], eax
jmp 0x10080da3
mov eax, dword [esp + 0x10]
and ebx, 0x80000000
add edi, 0x20
dec eax
mov dword [esi + 0x28], ebx
mov dword [esp + 0x10], eax
jmp 0x10080da3
lea edx, [edi + 0x14]
mov ecx, esi
push edx
call fcn.10080c90
mov bl, al
lea eax, [edi + 8]
push eax
mov ecx, esi
call fcn.10080c90
and bl, al
mov byte [esp + 0x50], bl
jne 0x10081431
mov eax, 2
add edi, 0x20
mov dword [esi + 0x28], eax
mov eax, dword [esp + 0x10]
dec eax
mov dword [esp + 0x10], eax
jmp 0x10080da3
mov eax, dword [esp + 0x50]
add edi, 0x20
and eax, 0xff
and al, 0x80
shl eax, 0x18
mov dword [esi + 0x28], eax
mov eax, dword [esp + 0x10]
dec eax
mov dword [esp + 0x10], eax
jmp 0x10080da3
mov cl, byte [edi + 4]
lea ebx, [edi + 8]
push ebx
push ecx
mov ecx, esi
call fcn.10080d20
not eax
push eax
push ebx
mov dl, byte [edi + 4]
push edx
mov ecx, esi
call fcn.10080d50
mov eax, dword [esp + 0x10]
add edi, 0x20
dec eax
mov dword [esp + 0x10], eax
jmp 0x10080da3
lea ebp, [edi + 8]
mov ecx, esi
push ebp
call fcn.10080c10
mov ebx, eax
mov ecx, esi
neg ebx
push ebx
push ebp
call fcn.10080c50
test ebx, ebx
jne 0x100814b7
mov eax, dword [esp + 0x10]
add edi, 0x20
mov ebx, 2
dec eax
mov dword [esi + 0x28], ebx
mov dword [esp + 0x10], eax
jmp 0x10080da3
mov eax, dword [esp + 0x10]
and ebx, 0x80000001
or ebx, 1
add edi, 0x20
dec eax
mov dword [esi + 0x28], ebx
mov dword [esp + 0x10], eax
jmp 0x10080da3
lea ebp, [edi + 8]
mov ecx, esi
push ebp
call fcn.10080c90
neg al
mov byte [esp + 0x30], al
mov ecx, esi
mov ebx, dword [esp + 0x30]
push ebx
push ebp
call fcn.10080cd0
mov al, bl
test al, al
jne 0x10081511
mov eax, dword [esp + 0x10]
add edi, 0x20
mov ebx, 2
dec eax
mov dword [esi + 0x28], ebx
mov dword [esp + 0x10], eax
jmp 0x10080da3
mov eax, dword [esp + 0x10]
and ebx, 0xff
and ebx, 0xffffff80
add edi, 0x20
shl ebx, 0x18
or ebx, 1
dec eax
mov dword [esi + 0x28], ebx
mov dword [esp + 0x10], eax
jmp 0x10080da3
lea eax, [edi + 8]
mov ecx, esi
push eax
call fcn.10080c10
mov ebp, eax
lea eax, [edi + 0x14]
push eax
mov ecx, esi
call fcn.10080c10
mov ebx, ebp
mov ecx, eax
shl ebx, cl
mov dword [esp + 0x60], eax
lea eax, [edi + 8]
mov ecx, esi
push ebx
push eax
call fcn.10080c50
test ebx, ebx
jne 0x1008158b
mov ecx, dword [esp + 0x60]
mov eax, dword [esp + 0x10]
dec ecx
mov ebx, 2
shl ebp, cl
add edi, 0x20
shr ebp, 0x1f
or ebp, ebx
dec eax
mov dword [esi + 0x28], ebp
mov dword [esp + 0x10], eax
jmp 0x10080da3
mov ecx, dword [esp + 0x60]
and ebx, 0x80000000
dec ecx
mov eax, dword [esp + 0x10]
shl ebp, cl
add edi, 0x20
shr ebp, 0x1f
or ebp, ebx
dec eax
mov dword [esi + 0x28], ebp
mov dword [esp + 0x10], eax
jmp 0x10080da3
lea ebp, [edi + 8]
mov ecx, esi
push ebp
call fcn.10080c90
lea edx, [edi + 0x14]
mov bl, al
push edx
mov ecx, esi
mov byte [esp + 0x58], bl
call fcn.10080c90
and eax, 0xff
mov ecx, eax
shl bl, cl
mov dword [esp + 0x60], ecx
mov ecx, esi
mov byte [esp + 0x34], bl
mov ebx, dword [esp + 0x34]
push ebx
push ebp
call fcn.10080cd0
mov al, bl
test al, al
jne 0x100815f8
mov ebx, 2
jmp 0x10081604
and ebx, 0xff
and ebx, 0xffffff80
shl ebx, 0x18
mov eax, dword [esp + 0x60]
mov edx, dword [esp + 0x54]
and edx, 0xff
add edi, 0x20
lea ecx, [eax - 1]
mov eax, dword [esp + 0x10]
shl edx, cl
shr edx, 7
and edx, 1
or edx, ebx
dec eax
mov dword [esi + 0x28], edx
mov dword [esp + 0x10], eax
jmp 0x10080da3
lea eax, [edi + 8]
mov ecx, esi
push eax
call fcn.10080c10
mov ebp, eax
lea eax, [edi + 0x14]
push eax
mov ecx, esi
call fcn.10080c10
mov ebx, ebp
mov ecx, eax
shr ebx, cl
mov dword [esp + 0x60], eax
lea eax, [edi + 8]
mov ecx, esi
push ebx
push eax
call fcn.10080c50
test ebx, ebx
jne 0x1008168a
mov ecx, dword [esp + 0x60]
mov eax, dword [esp + 0x10]
dec ecx
mov ebx, 2
shr ebp, cl
add edi, 0x20
and ebp, 1
or ebp, ebx
dec eax
mov dword [esi + 0x28], ebp
mov dword [esp + 0x10], eax
jmp 0x10080da3
mov ecx, dword [esp + 0x60]
and ebx, 0x80000000
dec ecx
mov eax, dword [esp + 0x10]
shr ebp, cl
add edi, 0x20
and ebp, 1
or ebp, ebx
dec eax
mov dword [esi + 0x28], ebp
mov dword [esp + 0x10], eax
jmp 0x10080da3
lea eax, [edi + 8]
mov ecx, esi
push eax
call fcn.10080c90
lea edx, [edi + 0x14]
mov ecx, esi
push edx
mov byte [esp + 0x40], al
call fcn.10080c90
mov bl, al
mov al, byte [esp + 0x3c]
and ebx, 0xff
mov cl, bl
shr al, cl
mov ecx, esi
mov byte [esp + 0x38], al
lea eax, [edi + 8]
mov ebp, dword [esp + 0x38]
push ebp
push eax
call fcn.10080cd0
mov al, byte [esp + 0x38]
test al, al
jne 0x100816fd
mov ebp, 2
jmp 0x10081709
and ebp, 0xff
and ebp, 0xffffff80
shl ebp, 0x18
mov eax, dword [esp + 0x3c]
mov cl, bl
dec cl
and eax, 0xff
shr eax, cl
add edi, 0x20
and eax, 1
or eax, ebp
mov dword [esi + 0x28], eax
mov eax, dword [esp + 0x10]
dec eax
mov dword [esp + 0x10], eax
jmp 0x10080da3
lea eax, [edi + 8]
mov ecx, esi
push eax
call fcn.10080c10
lea ecx, [edi + 0x14]
mov ebp, eax
push ecx
mov ecx, esi
call fcn.10080c10
mov ebx, ebp
mov ecx, eax
sar ebx, cl
mov dword [esp + 0x60], eax
lea eax, [edi + 8]
mov ecx, esi
push ebx
push eax
call fcn.10080c50
test ebx, ebx
jne 0x1008176a
mov ebx, 2
jmp 0x10081770
and ebx, 0x80000000
mov edx, dword [esp + 0x60]
mov eax, dword [esp + 0x10]
add edi, 0x20
lea ecx, [edx - 1]
shr ebp, cl
and ebp, 1
or ebp, ebx
dec eax
mov dword [esi + 0x28], ebp
mov dword [esp + 0x10], eax
jmp 0x10080da3
lea eax, [edi + 8]
mov ecx, esi
push eax
call fcn.10080c90
mov byte [esp + 0x44], al
lea eax, [edi + 0x14]
push eax
mov ecx, esi
call fcn.10080c90
mov bl, al
mov al, byte [esp + 0x44]
and ebx, 0xff
mov cl, bl
sar al, cl
mov ecx, esi
mov byte [esp + 0x40], al
lea eax, [edi + 8]
mov ebp, dword [esp + 0x40]
push ebp
push eax
call fcn.10080cd0
mov al, byte [esp + 0x40]
test al, al
jne 0x100817df
mov ebp, 2
jmp 0x100817eb
and ebp, 0xff
and ebp, 0xffffff80
shl ebp, 0x18
mov edx, dword [esp + 0x44]
mov cl, bl
dec cl
and edx, 0xff
mov eax, dword [esp + 0x10]
add edi, 0x20
shr edx, cl
and edx, 1
or edx, ebp
dec eax
mov dword [esi + 0x28], edx
mov dword [esp + 0x10], eax
jmp 0x10080da3
test byte [esi + 0x28], 2
je case.0x10080dae.39
jmp case.0x10080dae.8
test byte [esi + 0x28], 2
jmp 0x10081860
test dword [esi + 0x28], 0x80000000
je case.0x10080dae.39
jmp case.0x10080dae.8
test dword [esi + 0x28], 0x80000000
jmp 0x10081860
test byte [esi + 0x28], 1
je case.0x10080dae.39
jmp case.0x10080dae.8
test byte [esi + 0x28], 3
je case.0x10080dae.39
jmp case.0x10080dae.8
test byte [esi + 0x28], 3
jmp 0x10081860
test byte [esi + 0x28], 1
jne case.0x10080dae.39
add edi, 8
mov ecx, esi
push edi
call fcn.10080c10
cmp eax, dword [esp + 0x14]
jae 0x10081ba6
mov ecx, dword [esp + 0x10]
dec ecx
test ecx, ecx
mov dword [esp + 0x10], ecx
jle 0x10081bb2
mov ecx, dword [esp + 0x18]
shl eax, 5
add eax, ecx
mov edi, eax
jmp 0x10080da3
mov ebp, dword [esi + 0x20]
lea eax, [edi + 8]
add ebp, 0xfffffffc
push eax
mov ecx, esi
mov dword [esi + 0x20], ebp
call fcn.10080c10
mov ecx, dword [esi + 0x20]
mov edx, dword [esi]
and ecx, 0x3ffff
add edi, 0x20
mov dword [ecx + edx], eax
mov eax, dword [esp + 0x10]
dec eax
mov dword [esp + 0x10], eax
jmp 0x10080da3
mov eax, dword [esi + 0x20]
mov ecx, dword [esi]
and eax, 0x3ffff
mov edx, dword [eax + ecx]
lea eax, [edi + 8]
push edx
push eax
mov ecx, esi
call fcn.10080c50
mov eax, dword [esi + 0x20]
add edi, 0x20
add eax, 4
mov dword [esi + 0x20], eax
mov eax, dword [esp + 0x10]
dec eax
mov dword [esp + 0x10], eax
jmp 0x10080da3
mov ebx, dword [esi + 0x20]
mov edx, dword [esi]
add ebx, 0xfffffffc
mov ecx, edi
mov dword [esi + 0x20], ebx
mov eax, ebx
mov ebx, dword [esp + 0x18]
and eax, 0x3ffff
sub ecx, ebx
add edi, 8
sar ecx, 5
inc ecx
push edi
mov dword [eax + edx], ecx
mov ecx, esi
call fcn.10080c10
cmp eax, dword [esp + 0x14]
jae 0x10081ba6
mov ecx, dword [esp + 0x10]
dec ecx
test ecx, ecx
mov dword [esp + 0x10], ecx
jle 0x10081bb2
shl eax, 5
add eax, ebx
mov edi, eax
jmp 0x10080da3
mov eax, dword [esi + 0x20]
lea ecx, [esi + 4]
sub eax, 4
mov dword [esp + 0x60], 8
mov ebx, dword [esi]
mov ebp, dword [ecx]
mov edx, eax
add ecx, 4
and edx, 0x3ffff
sub eax, 4
mov dword [edx + ebx], ebp
mov edx, dword [esp + 0x60]
dec edx
mov dword [esp + 0x60], edx
jne 0x10081966
mov eax, dword [esi + 0x20]
add edi, 0x20
add eax, 0xffffffe0
mov dword [esi + 0x20], eax
mov eax, dword [esp + 0x10]
dec eax
mov dword [esp + 0x10], eax
jmp 0x10080da3
mov ecx, dword [esi + 0x20]
lea eax, [esi + 0x20]
mov edx, 8
mov ebp, dword [esi]
mov ebx, ecx
and ebx, 0x3ffff
sub eax, 4
add ecx, 4
dec edx
mov ebx, dword [ebx + ebp]
mov dword [eax + 4], ebx
jne 0x100819ab
mov eax, dword [esp + 0x10]
add edi, 0x20
dec eax
mov dword [esp + 0x10], eax
jmp 0x10080da3
mov edx, dword [esi + 0x20]
mov ecx, dword [esi]
add edx, 0xfffffffc
add edi, 0x20
mov eax, edx
mov dword [esi + 0x20], edx
mov edx, dword [esi + 0x28]
and eax, 0x3ffff
mov dword [eax + ecx], edx
mov eax, dword [esp + 0x10]
dec eax
mov dword [esp + 0x10], eax
jmp 0x10080da3
mov eax, dword [esi + 0x20]
mov edx, dword [esi]
mov ecx, eax
add eax, 4
and ecx, 0x3ffff
add edi, 0x20
mov ecx, dword [ecx + edx]
mov dword [esi + 0x20], eax
mov eax, dword [esp + 0x10]
mov dword [esi + 0x28], ecx
dec eax
mov dword [esp + 0x10], eax
jmp 0x10080da3
lea edx, [edi + 0x14]
mov ecx, esi
push edx
call fcn.10080c90
and eax, 0xff
mov ecx, esi
push eax
lea eax, [edi + 8]
push eax
call fcn.10080c50
mov eax, dword [esp + 0x10]
add edi, 0x20
dec eax
mov dword [esp + 0x10], eax
jmp 0x10080da3
lea ecx, [edi + 0x14]
push ecx
mov ecx, esi
call fcn.10080c90
movsx edx, al
lea eax, [edi + 8]
push edx
push eax
mov ecx, esi
call fcn.10080c50
mov eax, dword [esp + 0x10]
add edi, 0x20
dec eax
mov dword [esp + 0x10], eax
jmp 0x10080da3
mov cl, byte [edi + 4]
lea ebx, [edi + 8]
push ebx
push ecx
mov ecx, esi
call fcn.10080d20
mov dl, byte [edi + 4]
lea ebp, [edi + 0x14]
push ebp
push edx
mov ecx, esi
mov dword [esp + 0x68], eax
call fcn.10080d20
push eax
mov al, byte [edi + 4]
push ebx
push eax
mov ecx, esi
call fcn.10080d50
mov ecx, dword [esp + 0x60]
push ecx
push ebp
jmp 0x10081466
lea eax, [edi + 0x14]
mov ecx, esi
push eax
lea ebp, [edi + 8]
call fcn.10080c10
push ebp
mov ecx, esi
mov ebx, eax
call fcn.10080c10
imul ebx, eax
push ebx
push ebp
mov ecx, esi
call fcn.10080c50
mov eax, dword [esp + 0x10]
add edi, 0x20
dec eax
mov dword [esp + 0x10], eax
jmp 0x10080da3
lea ecx, [edi + 0x14]
lea ebp, [edi + 8]
push ecx
mov ecx, esi
call fcn.10080c90
push ebp
mov ecx, esi
mov bl, al
call fcn.10080c90
mov dl, al
mov al, bl
imul dl
mov byte [esp + 0x58], al
mov ecx, esi
mov eax, dword [esp + 0x58]
push eax
push ebp
call fcn.10080cd0
mov eax, dword [esp + 0x10]
add edi, 0x20
dec eax
mov dword [esp + 0x10], eax
jmp 0x10080da3
mov dl, byte [edi + 4]
lea ecx, [edi + 0x14]
push ecx
push edx
mov ecx, esi
call fcn.10080d20
mov ebp, eax
test ebp, ebp
je case.0x10080dae.39
mov al, byte [edi + 4]
lea ebx, [edi + 8]
push ebx
push eax
mov ecx, esi
call fcn.10080d20
xor edx, edx
mov cl, byte [edi + 4]
div ebp
push eax
push ebx
push ecx
jmp 0x1008146a
mov eax, dword [esi + 0x20]
cmp eax, 0x40000
jae 0x10081ba6
mov ecx, dword [esi]
mov edx, eax
and edx, 0x3ffff
mov edi, dword [edx + ecx]
mov ecx, dword [esp + 0x14]
cmp edi, ecx
jae 0x10081ba6
mov ecx, dword [esp + 0x10]
dec ecx
test ecx, ecx
mov dword [esp + 0x10], ecx
jle 0x10081bb2
mov ecx, dword [esp + 0x18]
shl edi, 5
add edi, ecx
add eax, 4
mov dword [esi + 0x20], eax
jmp 0x10080da3
pop edi
pop esi
pop ebp
mov al, 1
pop ebx
add esp, 0x4c
ret 4
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0x4c
ret 4