Function at 0x1009745a
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]
mov eax, dword [eax + 4]
mov esi, ecx
test eax, eax
mov dword [esp + 0x10], 0x17d7840
mov dword [esp + 0x18], edi
mov dword [esp + 0x14], eax
je 0x10097dc9
mov eax, dword [edi]
cmp eax, 0x36
ja case.0x10096fc5.39
jmp dword [eax*4 + 0x10097dd8]
lea eax, [edi + 0x14]
mov ecx, esi
push eax
call fcn.10096e20
lea ecx, [edi + 8]
push eax
push ecx
mov ecx, esi
call fcn.10096e60
mov eax, dword [esp + 0x10]
add edi, 0x20
dec eax
mov dword [esp + 0x10], eax
jmp 0x10096fba
lea edx, [edi + 0x14]
mov ecx, esi
push edx
call fcn.10096ea0
push eax
lea eax, [edi + 8]
push eax
mov ecx, esi
call fcn.10096ee0
mov eax, dword [esp + 0x10]
add edi, 0x20
dec eax
mov dword [esp + 0x10], eax
jmp 0x10096fba
lea ecx, [edi + 8]
push ecx
mov ecx, esi
call fcn.10096e20
lea edx, [edi + 0x14]
mov ecx, esi
push edx
mov ebx, eax
call fcn.10096e20
mov ecx, ebx
sub ecx, eax
jne 0x1009704d
mov eax, 2
add edi, 0x20
mov dword [esi + 0x28], eax
mov eax, dword [esp + 0x10]
dec eax
mov dword [esp + 0x10], eax
jmp 0x10096fba
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 0x10096fba
lea eax, [edi + 8]
mov ecx, esi
push eax
call fcn.10096ea0
lea ecx, [edi + 0x14]
mov bl, al
push ecx
mov ecx, esi
call fcn.10096ea0
mov cl, bl
sub cl, al
mov byte [esp + 0x48], cl
jne 0x100970aa
mov eax, 2
add edi, 0x20
mov dword [esi + 0x28], eax
mov eax, dword [esp + 0x10]
dec eax
mov dword [esp + 0x10], eax
jmp 0x10096fba
mov edx, dword [esp + 0x48]
cmp bl, cl
sbb eax, eax
and edx, 0xff
and edx, 0xffffff80
add edi, 0x20
neg eax
shl edx, 0x18
or eax, edx
mov dword [esi + 0x28], eax
mov eax, dword [esp + 0x10]
dec eax
mov dword [esp + 0x10], eax
jmp 0x10096fba
lea ebp, [edi + 8]
mov ecx, esi
push ebp
call fcn.10096e20
mov dword [esp + 0x60], eax
lea eax, [edi + 0x14]
push eax
mov ecx, esi
call fcn.10096e20
mov ebx, eax
mov eax, dword [esp + 0x60]
add ebx, eax
mov ecx, esi
push ebx
push ebp
call fcn.10096e60
test ebx, ebx
jne 0x1009712a
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 0x10096fba
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 0x10096fba
lea eax, [edi + 8]
mov ecx, esi
push eax
call fcn.10096ea0
lea edx, [edi + 0x14]
mov ecx, esi
push edx
mov byte [esp + 0x64], al
call fcn.10096ea0
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.10096ee0
test bl, bl
jne 0x100971b0
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 0x10096fba
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 0x10096fba
mov cl, byte [edi + 4]
lea eax, [edi + 8]
push eax
push ecx
mov ecx, esi
call fcn.10096f30
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.10096f30
mov edx, dword [esp + 0x60]
mov ebx, eax
mov al, byte [edi + 4]
add ebx, ebp
add ebx, edx
test al, al
je 0x1009721b
and ebx, 0xff
lea ecx, [edi + 8]
push ebx
push ecx
push eax
mov ecx, esi
call fcn.10096f60
mov eax, dword [esp + 0x60]
cmp ebx, eax
jb 0x10097353
jmp 0x10097347
lea ebp, [edi + 8]
mov ecx, esi
push ebp
call fcn.10096e20
lea ecx, [edi + 0x14]
mov ebx, eax
push ecx
mov ecx, esi
mov dword [esp + 0x64], ebx
call fcn.10096e20
sub ebx, eax
mov ecx, esi
push ebx
push ebp
call fcn.10096e60
test ebx, ebx
jne 0x1009727d
mov eax, 2
add edi, 0x20
mov dword [esi + 0x28], eax
mov eax, dword [esp + 0x10]
dec eax
mov dword [esp + 0x10], eax
jmp 0x10096fba
mov eax, dword [esp + 0x60]
jmp 0x100972d5
lea ebp, [edi + 8]
mov ecx, esi
push ebp
call fcn.10096ea0
and eax, 0xff
lea edx, [edi + 0x14]
mov ebx, eax
push edx
mov ecx, esi
mov dword [esp + 0x64], ebx
call fcn.10096ea0
and eax, 0xff
mov ecx, esi
sub ebx, eax
push ebx
push ebp
call fcn.10096ee0
test ebx, ebx
jne 0x100972d1
mov eax, 2
add edi, 0x20
mov dword [esi + 0x28], eax
mov eax, dword [esp + 0x10]
dec eax
mov dword [esp + 0x10], eax
jmp 0x10096fba
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 0x10096fba
lea eax, [edi + 8]
mov ecx, esi
push eax
mov al, byte [edi + 4]
push eax
call fcn.10096f30
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.10096f30
sub ebx, ebp
sub ebx, eax
mov al, byte [edi + 4]
test al, al
je 0x10097332
and ebx, 0xff
lea ecx, [edi + 8]
push ebx
push ecx
push eax
mov ecx, esi
call fcn.10096f60
mov eax, dword [esp + 0x60]
cmp ebx, eax
ja 0x10097353
cmp ebx, eax
jne 0x1009734f
test ebp, ebp
jne 0x10097353
xor eax, eax
jmp 0x10097358
mov eax, 1
test ebx, ebx
jne 0x10097377
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 0x10096fba
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 0x10096fba
lea ebp, [edi + 8]
mov ecx, esi
push ebp
call fcn.10096e20
mov ebx, eax
inc ebx
jmp 0x1009752c
lea ebp, [edi + 8]
mov ecx, esi
push ebp
call fcn.10096ea0
inc al
mov ecx, esi
mov byte [esp + 0x1c], al
mov ebx, dword [esp + 0x1c]
push ebx
push ebp
call fcn.10096ee0
mov al, bl
test al, al
jne 0x100975a0
mov eax, dword [esp + 0x10]
add edi, 0x20
mov ebx, 2
dec eax
mov dword [esi + 0x28], ebx
mov dword [esp + 0x10], eax
jmp 0x10096fba
lea ebp, [edi + 8]
mov ecx, esi
push ebp
call fcn.10096e20
mov ebx, eax
dec ebx
jmp 0x1009752c
lea ebp, [edi + 8]
mov ecx, esi
push ebp
call fcn.10096ea0
dec al
mov ecx, esi
mov byte [esp + 0x20], al
mov ebx, dword [esp + 0x20]
push ebx
push ebp
call fcn.10096ee0
mov al, bl
test al, al
jne 0x100975a0
mov eax, dword [esp + 0x10]
add edi, 0x20
mov ebx, 2
dec eax
mov dword [esi + 0x28], ebx
mov dword [esp + 0x10], eax
jmp 0x10096fba
lea eax, [edi + 0x14]
mov ecx, esi
push eax
lea ebp, [edi + 8]
call fcn.10096e20
push ebp
mov ecx, esi
mov ebx, eax
call fcn.10096e20
xor ebx, eax
jmp 0x1009752c
lea ecx, [edi + 0x14]
lea ebp, [edi + 8]
push ecx
mov ecx, esi
call fcn.10096ea0
push ebp
mov ecx, esi
mov bl, al
call fcn.10096ea0
xor bl, al
mov ecx, esi
mov byte [esp + 0x24], bl
mov ebx, dword [esp + 0x24]
push ebx
push ebp
call fcn.10096ee0
mov al, bl
test al, al
jne 0x100975a0
mov eax, dword [esp + 0x10]
add edi, 0x20
mov ebx, 2
dec eax
mov dword [esi + 0x28], ebx
mov dword [esp + 0x10], eax
jmp 0x10096fba
lea edx, [edi + 0x14]
mov ecx, esi
push edx
lea ebp, [edi + 8]
call fcn.10096e20
push ebp
mov ecx, esi
mov ebx, eax
call fcn.10096e20
and ebx, eax
jmp 0x1009752c
lea eax, [edi + 0x14]
mov ecx, esi
push eax
lea ebp, [edi + 8]
call fcn.10096ea0
push ebp
mov ecx, esi
mov bl, al
call fcn.10096ea0
and bl, al
mov ecx, esi
mov byte [esp + 0x28], bl
mov ebx, dword [esp + 0x28]
push ebx
push ebp
call fcn.10096ee0
mov al, bl
test al, al
jne 0x100975a0
mov eax, dword [esp + 0x10]
add edi, 0x20
mov ebx, 2
dec eax
mov dword [esi + 0x28], ebx
mov dword [esp + 0x10], eax
jmp 0x10096fba
lea ecx, [edi + 0x14]
lea ebp, [edi + 8]
push ecx
mov ecx, esi
call fcn.10096e20
push ebp
mov ecx, esi
mov ebx, eax
call fcn.10096e20
or ebx, eax
push ebx
push ebp
mov ecx, esi
call fcn.10096e60
test ebx, ebx
jne 0x100975f5
mov eax, dword [esp + 0x10]
add edi, 0x20
mov ebx, 2
dec eax
mov dword [esi + 0x28], ebx
mov dword [esp + 0x10], eax
jmp 0x10096fba
lea edx, [edi + 0x14]
mov ecx, esi
push edx
lea ebp, [edi + 8]
call fcn.10096ea0
push ebp
mov ecx, esi
mov bl, al
call fcn.10096ea0
or bl, al
mov ecx, esi
mov byte [esp + 0x2c], bl
mov ebx, dword [esp + 0x2c]
push ebx
push ebp
call fcn.10096ee0
mov al, bl
test al, al
jne 0x100975a0
mov eax, dword [esp + 0x10]
add edi, 0x20
mov ebx, 2
dec eax
mov dword [esi + 0x28], ebx
mov dword [esp + 0x10], eax
jmp 0x10096fba
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 0x10096fba
lea eax, [edi + 0x14]
mov ecx, esi
push eax
call fcn.10096e20
lea ecx, [edi + 8]
mov ebx, eax
push ecx
mov ecx, esi
call fcn.10096e20
and ebx, eax
jne 0x100975f5
mov eax, dword [esp + 0x10]
add edi, 0x20
mov ebx, 2
dec eax
mov dword [esi + 0x28], ebx
mov dword [esp + 0x10], eax
jmp 0x10096fba
mov eax, dword [esp + 0x10]
and ebx, 0x80000000
add edi, 0x20
dec eax
mov dword [esi + 0x28], ebx
mov dword [esp + 0x10], eax
jmp 0x10096fba
lea edx, [edi + 0x14]
mov ecx, esi
push edx
call fcn.10096ea0
mov bl, al
lea eax, [edi + 8]
push eax
mov ecx, esi
call fcn.10096ea0
and bl, al
mov byte [esp + 0x50], bl
jne 0x10097648
mov eax, 2
add edi, 0x20
mov dword [esi + 0x28], eax
mov eax, dword [esp + 0x10]
dec eax
mov dword [esp + 0x10], eax
jmp 0x10096fba
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 0x10096fba
mov cl, byte [edi + 4]
lea ebx, [edi + 8]
push ebx
push ecx
mov ecx, esi
call fcn.10096f30
not eax
push eax
push ebx
mov dl, byte [edi + 4]
push edx
mov ecx, esi
call fcn.10096f60
mov eax, dword [esp + 0x10]
add edi, 0x20
dec eax
mov dword [esp + 0x10], eax
jmp 0x10096fba
lea ebp, [edi + 8]
mov ecx, esi
push ebp
call fcn.10096e20
mov ebx, eax
mov ecx, esi
neg ebx
push ebx
push ebp
call fcn.10096e60
test ebx, ebx
jne 0x100976ce
mov eax, dword [esp + 0x10]
add edi, 0x20
mov ebx, 2
dec eax
mov dword [esi + 0x28], ebx
mov dword [esp + 0x10], eax
jmp 0x10096fba
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 0x10096fba
lea ebp, [edi + 8]
mov ecx, esi
push ebp
call fcn.10096ea0
neg al
mov byte [esp + 0x30], al
mov ecx, esi
mov ebx, dword [esp + 0x30]
push ebx
push ebp
call fcn.10096ee0
mov al, bl
test al, al
jne 0x10097728
mov eax, dword [esp + 0x10]
add edi, 0x20
mov ebx, 2
dec eax
mov dword [esi + 0x28], ebx
mov dword [esp + 0x10], eax
jmp 0x10096fba
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 0x10096fba
lea eax, [edi + 8]
mov ecx, esi
push eax
call fcn.10096e20
mov ebp, eax
lea eax, [edi + 0x14]
push eax
mov ecx, esi
call fcn.10096e20
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.10096e60
test ebx, ebx
jne 0x100977a2
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 0x10096fba
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 0x10096fba
lea ebp, [edi + 8]
mov ecx, esi
push ebp
call fcn.10096ea0
lea edx, [edi + 0x14]
mov bl, al
push edx
mov ecx, esi
mov byte [esp + 0x58], bl
call fcn.10096ea0
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.10096ee0
mov al, bl
test al, al
jne 0x1009780f
mov ebx, 2
jmp 0x1009781b
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 0x10096fba
lea eax, [edi + 8]
mov ecx, esi
push eax
call fcn.10096e20
mov ebp, eax
lea eax, [edi + 0x14]
push eax
mov ecx, esi
call fcn.10096e20
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.10096e60
test ebx, ebx
jne 0x100978a1
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 0x10096fba
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 0x10096fba
lea eax, [edi + 8]
mov ecx, esi
push eax
call fcn.10096ea0
lea edx, [edi + 0x14]
mov ecx, esi
push edx
mov byte [esp + 0x40], al
call fcn.10096ea0
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.10096ee0
mov al, byte [esp + 0x38]
test al, al
jne 0x10097914
mov ebp, 2
jmp 0x10097920
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 0x10096fba
lea eax, [edi + 8]
mov ecx, esi
push eax
call fcn.10096e20
lea ecx, [edi + 0x14]
mov ebp, eax
push ecx
mov ecx, esi
call fcn.10096e20
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.10096e60
test ebx, ebx
jne 0x10097981
mov ebx, 2
jmp 0x10097987
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 0x10096fba
lea eax, [edi + 8]
mov ecx, esi
push eax
call fcn.10096ea0
mov byte [esp + 0x44], al
lea eax, [edi + 0x14]
push eax
mov ecx, esi
call fcn.10096ea0
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.10096ee0
mov al, byte [esp + 0x40]
test al, al
jne 0x100979f6
mov ebp, 2
jmp 0x10097a02
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 0x10096fba
test byte [esi + 0x28], 2
je case.0x10096fc5.39
jmp case.0x10096fc5.8
test byte [esi + 0x28], 2
jmp 0x10097a77
test dword [esi + 0x28], 0x80000000
je case.0x10096fc5.39
jmp case.0x10096fc5.8
test dword [esi + 0x28], 0x80000000
jmp 0x10097a77
test byte [esi + 0x28], 1
je case.0x10096fc5.39
jmp case.0x10096fc5.8
test byte [esi + 0x28], 3
je case.0x10096fc5.39
jmp case.0x10096fc5.8
test byte [esi + 0x28], 3
jmp 0x10097a77
test byte [esi + 0x28], 1
jne case.0x10096fc5.39
add edi, 8
mov ecx, esi
push edi
call fcn.10096e20
cmp eax, dword [esp + 0x14]
jae 0x10097dbd
mov ecx, dword [esp + 0x10]
dec ecx
test ecx, ecx
mov dword [esp + 0x10], ecx
jle 0x10097dc9
mov ecx, dword [esp + 0x18]
shl eax, 5
add eax, ecx
mov edi, eax
jmp 0x10096fba
mov ebp, dword [esi + 0x20]
lea eax, [edi + 8]
add ebp, 0xfffffffc
push eax
mov ecx, esi
mov dword [esi + 0x20], ebp
call fcn.10096e20
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 0x10096fba
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.10096e60
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 0x10096fba
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.10096e20
cmp eax, dword [esp + 0x14]
jae 0x10097dbd
mov ecx, dword [esp + 0x10]
dec ecx
test ecx, ecx
mov dword [esp + 0x10], ecx
jle 0x10097dc9
shl eax, 5
add eax, ebx
mov edi, eax
jmp 0x10096fba
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 0x10097b7d
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 0x10096fba
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 0x10097bc2
mov eax, dword [esp + 0x10]
add edi, 0x20
dec eax
mov dword [esp + 0x10], eax
jmp 0x10096fba
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 0x10096fba
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 0x10096fba
lea edx, [edi + 0x14]
mov ecx, esi
push edx
call fcn.10096ea0
and eax, 0xff
mov ecx, esi
push eax
lea eax, [edi + 8]
push eax
call fcn.10096e60
mov eax, dword [esp + 0x10]
add edi, 0x20
dec eax
mov dword [esp + 0x10], eax
jmp 0x10096fba
lea ecx, [edi + 0x14]
push ecx
mov ecx, esi
call fcn.10096ea0
movsx edx, al
lea eax, [edi + 8]
push edx
push eax
mov ecx, esi
call fcn.10096e60
mov eax, dword [esp + 0x10]
add edi, 0x20
dec eax
mov dword [esp + 0x10], eax
jmp 0x10096fba
mov cl, byte [edi + 4]
lea ebx, [edi + 8]
push ebx
push ecx
mov ecx, esi
call fcn.10096f30
mov dl, byte [edi + 4]
lea ebp, [edi + 0x14]
push ebp
push edx
mov ecx, esi
mov dword [esp + 0x68], eax
call fcn.10096f30
push eax
mov al, byte [edi + 4]
push ebx
push eax
mov ecx, esi
call fcn.10096f60
mov ecx, dword [esp + 0x60]
push ecx
push ebp
jmp 0x1009767d
lea eax, [edi + 0x14]
mov ecx, esi
push eax
lea ebp, [edi + 8]
call fcn.10096e20
push ebp
mov ecx, esi
mov ebx, eax
call fcn.10096e20
imul ebx, eax
push ebx
push ebp
mov ecx, esi
call fcn.10096e60
mov eax, dword [esp + 0x10]
add edi, 0x20
dec eax
mov dword [esp + 0x10], eax
jmp 0x10096fba
lea ecx, [edi + 0x14]
lea ebp, [edi + 8]
push ecx
mov ecx, esi
call fcn.10096ea0
push ebp
mov ecx, esi
mov bl, al
call fcn.10096ea0
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.10096ee0
mov eax, dword [esp + 0x10]
add edi, 0x20
dec eax
mov dword [esp + 0x10], eax
jmp 0x10096fba
mov dl, byte [edi + 4]
lea ecx, [edi + 0x14]
push ecx
push edx
mov ecx, esi
call fcn.10096f30
mov ebp, eax
test ebp, ebp
je case.0x10096fc5.39
mov al, byte [edi + 4]
lea ebx, [edi + 8]
push ebx
push eax
mov ecx, esi
call fcn.10096f30
xor edx, edx
mov cl, byte [edi + 4]
div ebp
push eax
push ebx
push ecx
jmp 0x10097681
mov eax, dword [esi + 0x20]
cmp eax, 0x40000
jae 0x10097dbd
mov ecx, dword [esi]
mov edx, eax
and edx, 0x3ffff
mov edi, dword [edx + ecx]
mov ecx, dword [esp + 0x14]
cmp edi, ecx
jae 0x10097dbd
mov ecx, dword [esp + 0x10]
dec ecx
test ecx, ecx
mov dword [esp + 0x10], ecx
jle 0x10097dc9
mov ecx, dword [esp + 0x18]
shl edi, 5
add edi, ecx
add eax, 4
mov dword [esi + 0x20], eax
jmp 0x10096fba
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