Function at 0x805aa0
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x48
mov ebx, edx
mov eax, dword [ecx]
mov edx, dword [esp + 0x68]
mov edi, dword [esp + 0x64]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x40], 0
test ebx, ebx
mov dword [edx + 0x1c], 0xffffffff
mov dword [esp + 0x34], eax
jne 0x805ada
mov dword [esp + 0x18], 0
xor esi, esi
jmp 0x805b45
test byte [edi + 0x18], 6
mov esi, 0
mov dword [esp + 0x18], 0
jne 0x805b45
mov esi, dword [eax + 0x14]
test esi, esi
jg 0x805b00
mov dword [esp + 0x18], 0
mov esi, ebx
jmp 0x805b45
mov eax, dword [eax + 0x10]
xor edi, edi
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
mov ebp, edi
mov edx, ebx
shl ebp, 4
mov ecx, dword [eax + ebp]
call fcn.00783720
test eax, eax
jne 0x805b2e
mov eax, dword [esp + 4]
mov eax, dword [eax + ebp + 0xc]
mov dword [esp + 0x18], eax
jmp 0x805b3b
inc edi
cmp edi, esi
jl 0x805b09
mov dword [esp + 0x18], 0
mov edx, dword [esp + 0x68]
mov edi, dword [esp + 0x64]
mov esi, ebx
cmp dword [esp + 0x5c], 0
lea ecx, [edx + 0x2c]
mov ebx, esi
mov dword [esp + 0x2c], 0xa4
mov dword [esp + 0x10], 0
mov dword [esp + 4], esi
mov dword [esp + 0x3c], ecx
setne al
test esi, esi
sete ah
and ah, al
xor ah, 1
mov byte [esp + 0x1f], ah
mov eax, fcn.00795c80
and eax, 1
inc eax
mov dword [esp + 0x38], eax
mov eax, fcn.00822ec0
and eax, 1
inc eax
mov dword [esp + 0x44], eax
xor eax, eax
mov dword [esp + 0xc], edi
mov edi, dword [edi + 4]
mov dword [esp + 8], eax
test edi, edi
jne 0x805bb7
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
mov dword [esp], 0
jmp 0x805de6
cmp dword [edi], 0
jg 0x805bc8
mov dword [esp], 0
jmp 0x805da7
lea esi, [edi + 8]
xor ebp, ebp
mov dword [esp], 0
mov dword [esp + 0x20], edi
mov eax, dword [esi + 0x14]
mov edx, dword [esi + 0x10]
test eax, eax
je 0x805c84
test byte [eax + 5], 8
je 0x805c84
mov dword [esp + 0x30], ebp
mov ebp, dword [eax + 0x1c]
mov dword [esp + 0x28], esi
xor esi, esi
mov edi, 0
mov dword [esp + 0x24], edx
mov ebx, dword [ebp]
test ebx, ebx
jle 0x805c54
mov edx, dword [esp + 0x60]
lea eax, [esi + esi*4]
lea ecx, [ebp + eax*4 + 4]
push dword [esp + 4]
push dword [esp + 0x60]
call fcn.00807e90
add esp, 8
test eax, eax
je 0x805c4f
mov eax, dword [esp + 0x68]
inc dword [esp]
mov edi, 1
mov dword [esp + 0x10], 2
mov word [eax + 0x20], si
mov eax, dword [esp + 0x28]
mov ebx, dword [ebp]
mov dword [esp + 8], eax
inc esi
cmp esi, ebx
jl 0x805c0d
cmp dword [esp + 0x5c], 0
mov esi, dword [esp + 0x28]
mov ebp, dword [esp + 0x30]
jne 0x805c70
mov ebx, dword [esp + 4]
mov edi, dword [esp + 0x20]
jmp 0x805d9b
test edi, edi
mov ebx, dword [esp + 4]
mov edi, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
jne 0x805d9b
test ebx, ebx
je 0x805c95
mov eax, dword [esp + 0x18]
cmp dword [edx + 0x48], eax
jne 0x805d9b
cmp dword [esp + 0x5c], 0
mov dword [esp + 0x24], edx
je 0x805cfc
mov ebx, ebp
mov ebp, esi
mov esi, dword [esi + 0xc]
test esi, esi
mov ecx, esi
jne 0x805caf
mov ecx, dword [edx]
mov edx, dword [esp + 0x5c]
call fcn.00783720
test eax, eax
je 0x805cc9
mov esi, ebp
mov ebp, ebx
mov ebx, dword [esp + 4]
jmp 0x805d9b
test esi, esi
mov esi, ebp
mov ebp, ebx
mov ebx, dword [esp + 4]
mov edx, dword [esp + 0x24]
je 0x805cfc
mov eax, dword [esp + 0x14]
cmp byte [eax + 0xc8], 2
jb 0x805cfc
mov ecx, dword [esp + 0x14]
xor edx, edx
push dword [esp + 0x3c]
call fcn.008022f0
mov edx, dword [esp + 0x28]
add esp, 4
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 8]
movsx edi, word [edx + 0x2a]
test eax, eax
lea eax, [eax + 1]
cmove ecx, esi
test edi, edi
mov dword [esp + 0x10], eax
mov dword [esp + 8], ecx
jg 0x805d22
mov edi, dword [esp + 0x20]
jmp 0x805d9b
mov ebx, dword [edx + 4]
mov dword [esp + 0x30], ebp
mov ebp, esi
xor esi, esi
mov ecx, dword [ebx]
mov edx, dword [esp + 0x60]
call fcn.00783720
test eax, eax
jne 0x805d85
cmp dword [esp], 1
jne 0x805d58
test byte [ebp + 0x24], 4
jne 0x805d85
mov ecx, dword [ebp + 0x34]
mov edx, dword [esp + 0x60]
call fcn.00807f40
test eax, eax
jne 0x805d85
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x68]
inc dword [esp]
mov ebx, dword [esp + 4]
mov edi, dword [esp + 0x20]
mov edx, 0xffff
mov dword [esp + 8], ebp
movsx eax, word [eax + 0x28]
cmp esi, eax
cmove esi, edx
mov word [ecx + 0x20], si
mov esi, ebp
jmp 0x805d97
inc esi
add ebx, 0x14
cmp esi, edi
jl 0x805d2d
mov ebx, dword [esp + 4]
mov edi, dword [esp + 0x20]
mov esi, ebp
mov ebp, dword [esp + 0x30]
inc ebp
add esi, 0x48
cmp ebp, dword [edi]
jl 0x805bd8
mov edx, dword [esp + 8]
test edx, edx
jne 0x805db9
mov dword [esp + 8], 0
jmp 0x805dde
mov eax, dword [edx + 0x2c]
mov ecx, dword [esp + 0x68]
mov dword [ecx + 0x1c], eax
mov eax, dword [edx + 0x10]
mov dword [ecx + 0x2c], eax
test byte [edx + 0x24], 8
je 0x805dd7
mov ecx, dword [esp + 0x68]
or byte [ecx + 6], 0x10
mov eax, dword [eax + 0x48]
mov dword [esp + 0x18], eax
mov ebx, dword [esp + 0x10]
mov esi, dword [esp + 0x14]
test ebx, ebx
setne al
or al, byte [esp + 0x1f]
je 0x805e05
mov esi, dword [esp + 0x68]
mov edi, dword [esp + 0xc]
mov ebp, dword [esp + 8]
mov eax, dword [esp]
jmp 0x8063a0
xor ebx, ebx
cmp dword [esi + 0x78], 0
mov edi, dword [esp + 0x38]
mov ebp, esi
je 0x8060cb
mov bl, byte [esi + 0x90]
cmp bl, 0x7e
je 0x805f96
mov esi, dword [esp + 0x44]
xor eax, eax
movzx edx, byte [0xbb8557]
mov ecx, esi
xor ecx, fcn.00822ec0
sete al
mov ecx, eax
not ecx
lea eax, [ecx + eax*2]
and al, 7
movzx eax, al
bt edx, eax
jb 0x805f61
mov al, byte [0xbb8557]
mov edx, esi
xor ecx, ecx
xor edx, fcn.00822ec0
sete cl
mov edx, ecx
not edx
lea ecx, [edx + ecx*2]
mov dl, 1
and cl, 7
xor cl, 7
shl dl, cl
or dl, al
lock cmpxchg byte [0xbb8557], dl
jne 0x805e58
mov edx, esi
xor ecx, ecx
movzx eax, al
xor edx, fcn.00822ec0
sete cl
mov edx, ecx
not edx
lea ecx, [edx + ecx*2]
and cl, 7
xor cl, 7
movzx ecx, cl
bt eax, ecx
jae 0x805ed1
mov ecx, esi
xor eax, eax
movzx edx, byte [0xbb8557]
xor ecx, fcn.00822ec0
sete al
mov ecx, eax
not ecx
lea eax, [ecx + eax*2]
and al, 7
movzx eax, al
bt edx, eax
jae 0x805ea7
jmp 0x805f61
mov ecx, esi
xor eax, eax
movzx edx, byte [0xbb8557]
xor ecx, fcn.00822ec0
sete al
mov ecx, eax
not ecx
lea eax, [ecx + eax*2]
and al, 7
movzx eax, al
bt edx, eax
jb 0x805f3d
mov ecx, esi
xor eax, eax
xor ecx, fcn.00822ec0
sete al
mov ecx, eax
xor ecx, 0xba38553f
lea ecx, [ecx + eax*2 + 0x1000]
mov eax, dword [0xbb854c]
mov edx, ecx
shr edx, 0x1f
or edx, ecx
xor eax, ecx
and cl, 7
mov dword [0xbb854c], eax
not eax
imul edx, eax
xor dword [0xbb8550], edx
mov dl, 1
shl dl, cl
or byte [0xbb8557], dl
mov ecx, esi
xor eax, eax
xor ecx, fcn.00822ec0
sete al
mov ecx, eax
not ecx
lea ecx, [ecx + eax*2]
mov al, 0xfe
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbb8557], al
mov edx, dword [esp + 0x5c]
mov ecx, 0xbb854c
call fcn.00783720
test eax, eax
jne 0x805f88
mov eax, dword [esp + 0x68]
mov dword [eax + 0x1c], 1
mov eax, ebp
mov ebx, dword [ebp + 0x78]
jmp 0x8060cb
cmp bl, 0x7d
mov esi, ebp
jne 0x805f96
xor ebx, ebx
jmp 0x8060cb
mov edx, fcn.0078df50
mov eax, fcn.0078df50
movzx ebx, byte [0xbb8563]
and edx, 1
xor edx, eax
xor eax, eax
cmp edx, 0xffffffff
sete al
mov ecx, eax
xor ecx, 5
lea eax, [ecx + eax*2]
bt ebx, eax
jb 0x8060a6
mov al, byte [0xbb8563]
xor ecx, ecx
cmp edx, 0xffffffff
mov ah, 1
sete cl
mov ebx, ecx
xor ebx, 5
lea ecx, [ebx + ecx*2]
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb8563], ah
jne 0x805fca
xor ecx, ecx
cmp edx, 0xffffffff
movzx eax, al
sete cl
mov ebx, ecx
xor ebx, 5
lea ecx, [ebx + ecx*2]
xor cl, 7
movzx ecx, cl
bt eax, ecx
jae 0x806029
xor eax, eax
cmp edx, 0xffffffff
movzx ebx, byte [0xbb8563]
sete al
mov ecx, eax
xor ecx, 5
lea eax, [ecx + eax*2]
bt ebx, eax
jae 0x80600b
jmp 0x8060a6
xor eax, eax
cmp edx, 0xffffffff
movzx ebx, byte [0xbb8563]
sete al
mov ecx, eax
xor ecx, 5
lea eax, [ecx + eax*2]
bt ebx, eax
jb 0x806089
xor eax, eax
cmp edx, 0xffffffff
sete al
mov ecx, eax
xor ecx, 0xc8d44a8d
lea ecx, [ecx + eax*2 + 0x280]
mov eax, dword [0xbb8558]
mov esi, ecx
shr esi, 0x1f
or esi, ecx
xor eax, ecx
and cl, 7
mov dword [0xbb8558], eax
not eax
imul esi, eax
mov ah, 1
xor dword [0xbb855c], esi
shl ah, cl
mov esi, ebp
or byte [0xbb8563], ah
xor eax, eax
cmp edx, 0xffffffff
sete al
mov ecx, eax
xor ecx, 5
lea ecx, [ecx + eax*2]
mov al, 0xfe
xor cl, 7
rol al, cl
and byte [0xbb8563], al
mov edx, dword [esp + 0x5c]
mov ecx, 0xbb8558
call fcn.00783720
test eax, eax
mov ebx, 0
jne 0x8060cb
mov eax, dword [esp + 0x68]
mov dword [eax + 0x1c], 0
mov ebx, dword [esi + 0x78]
mov eax, dword [esp + 0xc]
test byte [eax + 0x19], 2
je 0x806253
mov esi, dword [eax + 8]
test esi, esi
je 0x806253
mov ecx, edi
xor eax, eax
movzx edx, byte [0xbb8573]
xor ecx, fcn.00795c80
sete al
mov ecx, eax
xor ecx, 3
lea eax, [eax + ecx*2]
bt edx, eax
jb 0x806230
mov al, byte [0xbb8573]
mov edx, edi
xor ecx, ecx
xor edx, fcn.00795c80
sete cl
mov edx, ecx
not edx
and edx, 3
lea ecx, [ecx + edx*2]
mov dl, 1
xor cl, 7
shl dl, cl
or dl, al
lock cmpxchg byte [0xbb8573], dl
jne 0x80610e
mov edx, edi
xor ecx, ecx
movzx eax, al
xor edx, fcn.00795c80
sete cl
mov edx, ecx
not edx
and edx, 3
lea ecx, [ecx + edx*2]
xor cl, 7
movzx ecx, cl
bt eax, ecx
jae 0x806183
mov ecx, edi
xor eax, eax
movzx edx, byte [0xbb8573]
xor ecx, fcn.00795c80
sete al
mov ecx, eax
xor ecx, 3
lea eax, [eax + ecx*2]
bt edx, eax
jae 0x80615d
jmp 0x806230
mov ecx, edi
xor eax, eax
movzx edx, byte [0xbb8573]
xor ecx, fcn.00795c80
sete al
mov ecx, eax
xor ecx, 3
lea eax, [eax + ecx*2]
bt edx, eax
jb 0x80620c
mov ecx, edi
xor eax, eax
xor ecx, fcn.00795c80
sete al
mov ecx, eax
not ecx
and ecx, 0x5c3
lea edx, [eax + ecx*2]
lea ecx, [eax + ecx*2 - 0x3ede7fe8]
mov eax, dword [0xbb8564]
or edx, 0xc1218019
xor eax, ecx
and cl, 7
mov dword [0xbb8564], eax
not eax
imul edx, eax
mov eax, dword [0xbb8568]
lea edi, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbb8568], eax
or edx, edi
not eax
mov edi, dword [esp + 0x38]
imul eax, edx
mov dl, 1
xor dword [0xbb856c], eax
shl dl, cl
or byte [0xbb8573], dl
mov ecx, edi
xor eax, eax
xor ecx, fcn.00795c80
sete al
mov ecx, eax
not ecx
and ecx, 3
lea ecx, [eax + ecx*2]
mov al, 0xfe
xor cl, 7
rol al, cl
and byte [0xbb8573], al
mov edx, dword [esp + 0x5c]
mov ecx, 0xbb8564
call fcn.00783720
test eax, eax
jne 0x806253
mov eax, dword [esi + 0x14]
mov ecx, dword [esp + 0x68]
mov ebx, dword [eax + 0x18]
mov dword [ecx + 0x1c], 2
test ebx, ebx
jne 0x806265
mov edi, dword [esp + 0xc]
mov eax, dword [esp]
xor ebx, ebx
jmp 0x8063ec
movsx esi, word [ebx + 0x2a]
mov eax, dword [ebx + 0x48]
mov dword [esp + 0x10], ebx
test esi, esi
mov dword [esp + 0x18], eax
jg 0x80627c
xor ebx, ebx
jmp 0x8062ac
mov edi, dword [ebx + 4]
xor ebx, ebx
mov ecx, dword [edi]
mov edx, dword [esp + 0x60]
call fcn.00783720
test eax, eax
jne 0x8062a4
mov eax, dword [esp + 0x10]
mov ecx, 0xffffffff
movsx eax, word [eax + 0x28]
cmp ebx, eax
cmove ebx, ecx
jmp 0x8062ac
inc ebx
add edi, 0x14
cmp ebx, esi
jl 0x806281
cmp ebx, esi
jl 0x8062d1
mov ecx, dword [esp + 0x60]
call fcn.007979e0
test eax, eax
je 0x8062d1
mov eax, dword [esp + 0x10]
mov ecx, 0
mov al, byte [eax + 0x25]
and al, 2
cmp al, 1
sbb ecx, ecx
or ebx, ecx
mov eax, dword [esp]
cmp ebx, esi
jl 0x8062e9
mov esi, dword [esp + 0x68]
mov edi, dword [esp + 0xc]
mov ebp, dword [esp + 8]
jmp 0x80639b
inc eax
mov dword [esp], eax
mov eax, dword [esp + 0x68]
mov eax, dword [eax + 0x1c]
cmp eax, 2
jne 0x806345
cmp byte [ebp + 0xc8], 2
jb 0x806326
mov esi, dword [esp + 0x68]
mov edi, dword [esp + 0xc]
mov eax, dword [esp + 0x10]
mov dword [esp + 0x2c], 0xa4
mov word [esi + 0x20], bx
mov dword [esi + 0x2c], eax
mov ebp, dword [esp + 8]
mov eax, dword [esp]
jmp 0x80639b
mov edi, dword [esp + 0xc]
mov esi, dword [esp + 0x68]
mov eax, dword [edi + 8]
add ebx, dword [eax + 0x18]
mov dword [esi + 0x1c], ebx
or byte [esi + 6], 0x40
mov dword [esp + 0x2c], 0xad
jmp 0x80631d
test ebx, ebx
jns 0x806353
mov esi, dword [esp + 0x68]
mov byte [esi + 1], 0x44
jmp 0x80637d
mov edx, 1
mov ecx, ebx
mov esi, 0xffffffff
shl edx, cl
cmp ebx, 0x1f
cmovg edx, esi
test eax, eax
jne 0x806373
or dword [ebp + 0x88], edx
jmp 0x806379
or dword [ebp + 0x8c], edx
mov esi, dword [esp + 0x68]
mov ecx, dword [esp + 0x10]
mov edi, dword [esp + 0xc]
mov ebp, dword [esp + 8]
mov eax, dword [esp]
mov dword [esp + 0x2c], 0x4d
mov dword [esi + 0x2c], ecx
mov word [esi + 0x20], bx
mov ebx, 1
test ebp, ebp
je 0x8063ec
cmp ebx, 1
jne 0x8063ec
test eax, eax
jne 0x8063ec
xor eax, eax
test byte [edi + 0x18], 0x28
mov ebx, 1
jne 0x8063ec
mov ecx, dword [esp + 0x60]
call fcn.007979e0
test eax, eax
jne 0x8063cb
xor eax, eax
jmp 0x8063ec
mov eax, dword [ebp + 0x10]
test byte [eax + 0x25], 2
je 0x8063d8
xor eax, eax
jmp 0x8063ec
mov ebx, 1
mov eax, 1
mov word [esi + 0x20], 0xffff
mov byte [esi + 1], 0x44
cmp dword [esp + 0x5c], 0
mov dword [esp + 0x10], ebx
jne 0x806a68
test eax, eax
jne 0x806a68
mov ecx, dword [edi + 0x18]
test cl, cl
mov dword [esp + 0x28], ecx
jns 0x806a68
mov eax, dword [edi + 8]
xor edi, edi
mov ebx, dword [eax]
mov dword [esp], eax
test ebx, ebx
jle 0x806a93
mov eax, dword [esp]
lea esi, [edi + edi*4]
test byte [eax + esi*4 + 0x10], 3
jne 0x806a8a
mov eax, dword [esp]
mov ebp, dword [eax + esi*4 + 8]
push dword [esp + 0x60]
push ebp
call fcn.00783700
add esp, 8
test eax, eax
jne 0x806a8a
mov eax, dword [esp]
test byte [esp + 0x28], 1
mov ebx, dword [esp + 0x14]
mov ecx, dword [eax + esi*4 + 4]
mov eax, dword [ecx + 4]
jne 0x806653
mov edx, eax
and edx, 0x10
je 0x806653
mov edx, fcn.007a84c0
movzx ecx, byte [0xbb85a3]
not edx
and edx, 1
mov eax, edx
add eax, fcn.007a84c0
sete al
or al, 4
movzx eax, al
bt ecx, eax
jb 0x80663a
mov al, byte [0xbb85a3]
mov ecx, edx
mov ah, 1
add ecx, fcn.007a84c0
sete cl
or cl, 4
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb85a3], ah
jne 0x8064a3
mov ecx, fcn.007a84c0
movzx eax, al
not ecx
and ecx, 1
mov edx, ecx
add edx, fcn.007a84c0
sete dl
or dl, 4
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x80650a
mov eax, ecx
movzx edx, byte [0xbb85a3]
add eax, fcn.007a84c0
sete al
or al, 4
movzx eax, al
bt edx, eax
jae 0x8064ea
jmp 0x80663a
add ecx, fcn.007a84c0
movzx ecx, byte [0xbb85a3]
sete al
or al, 4
movzx eax, al
bt ecx, eax
jb 0x806618
mov eax, fcn.007a84c0
xor ecx, ecx
not eax
and eax, 1
add eax, fcn.007a84c0
mov eax, dword [0xbb8580]
sete cl
or ecx, 0x211bf454
add ecx, 0x1350
xor eax, ecx
mov dword [0xbb8580], eax
not eax
mov edx, dword [0xbb8584]
imul eax, ecx
and cl, 7
lea esi, [eax + eax]
xor edx, eax
shr eax, 0x1e
mov dword [0xbb8584], edx
or esi, eax
not edx
mov eax, dword [0xbb8588]
imul edx, esi
lea esi, [edx*4]
xor eax, edx
shr edx, 0x1d
mov dword [0xbb8588], eax
or esi, edx
not eax
mov edx, dword [0xbb858c]
imul eax, esi
lea esi, [eax*8]
xor edx, eax
shr eax, 0x1c
mov dword [0xbb858c], edx
or esi, eax
not edx
mov eax, dword [0xbb8590]
imul edx, esi
mov esi, edx
shl esi, 4
xor eax, edx
shr edx, 0x1b
mov dword [0xbb8590], eax
or edx, esi
not eax
imul eax, edx
mov edx, dword [0xbb8594]
mov esi, eax
shl esi, 5
xor edx, eax
shr eax, 0x1a
mov dword [0xbb8594], edx
or eax, esi
not edx
mov edi, dword [0xbb8598]
imul edx, eax
mov esi, edx
shl esi, 6
xor edi, edx
shr edx, 0x19
mov dword [0xbb8598], edi
or edx, esi
not edi
imul edi, edx
mov dl, 1
xor dword [0xbb859c], edi
shl dl, cl
or byte [0xbb85a3], dl
mov eax, fcn.007a84c0
not eax
and eax, 1
add eax, fcn.007a84c0
mov al, 0xfe
sete cl
or cl, 4
xor cl, 7
rol al, cl
and byte [0xbb85a3], al
push ebp
push 0xbb8580
push ebx
call fcn.0078de60
add esp, 0xc
mov eax, 2
jmp 0x807647
test ax, ax
jns 0x806872
mov eax, dword [esp + 0xc]
cmp eax, dword [esp + 0x64]
jne 0x80667c
and dword [esp + 0x28], 0x4000
mov eax, dword [esp + 0x64]
mov dword [esp + 0xc], eax
jne 0x806872
mov edx, fcn.007ffde0
mov edi, fcn.007ffde0
xor eax, eax
or edx, 2
xor edi, 2
mov ecx, edx
add ecx, edi
movzx ecx, byte [0xbb85db]
setne al
bt ecx, eax
jb 0x806867
mov al, byte [0xbb85db]
mov ecx, edx
mov ah, 1
add ecx, edi
setne cl
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb85db], ah
jne 0x8066aa
mov ecx, fcn.007ffde0
mov edx, fcn.007ffde0
or ecx, 2
xor edx, 2
mov esi, ecx
add esi, edx
setne ah
xor ah, 7
movzx esi, ah
movzx eax, al
bt eax, esi
jae 0x806703
mov esi, ecx
xor eax, eax
add esi, edx
movzx esi, byte [0xbb85db]
setne al
bt esi, eax
jae 0x8066e9
jmp 0x806867
xor eax, eax
add ecx, edx
movzx ecx, byte [0xbb85db]
setne al
bt ecx, eax
jb 0x806845
mov eax, fcn.007ffde0
mov edx, fcn.007ffde0
xor ecx, ecx
xor edx, 2
or eax, 2
add eax, edx
mov eax, dword [0xbb85b0]
sete cl
xor ecx, 0x52c78911
or ecx, 0xc0
xor eax, ecx
mov dword [0xbb85b0], eax
not eax
mov edx, dword [0xbb85b4]
imul eax, ecx
and cl, 1
lea esi, [eax + eax]
xor edx, eax
shr eax, 0x1e
mov dword [0xbb85b4], edx
or esi, eax
not edx
mov eax, dword [0xbb85b8]
imul edx, esi
lea esi, [edx*4]
xor eax, edx
shr edx, 0x1d
mov dword [0xbb85b8], eax
or esi, edx
not eax
mov edx, dword [0xbb85bc]
imul eax, esi
lea esi, [eax*8]
xor edx, eax
shr eax, 0x1c
mov dword [0xbb85bc], edx
or esi, eax
not edx
mov eax, dword [0xbb85c0]
imul edx, esi
mov esi, edx
shl esi, 4
xor eax, edx
shr edx, 0x1b
mov dword [0xbb85c0], eax
or edx, esi
not eax
imul eax, edx
mov edx, dword [0xbb85c4]
mov esi, eax
shl esi, 5
xor edx, eax
shr eax, 0x1a
mov dword [0xbb85c4], edx
or eax, esi
not edx
imul edx, eax
mov eax, dword [0xbb85c8]
mov esi, edx
shl esi, 6
xor eax, edx
shr edx, 0x19
mov dword [0xbb85c8], eax
or edx, esi
not eax
imul eax, edx
mov edx, dword [0xbb85cc]
mov esi, eax
shl esi, 7
xor edx, eax
shr eax, 0x18
mov dword [0xbb85cc], edx
or eax, esi
not edx
mov edi, dword [0xbb85d0]
imul edx, eax
mov esi, edx
shl esi, 8
xor edi, edx
shr edx, 0x17
mov dword [0xbb85d0], edi
or edx, esi
not edi
imul edi, edx
mov dl, 1
xor dword [0xbb85d4], edi
shl dl, cl
or byte [0xbb85db], dl
mov eax, fcn.007ffde0
mov ecx, fcn.007ffde0
xor ecx, 2
or eax, 2
add eax, ecx
mov al, 0xfe
setne cl
xor cl, 7
rol al, cl
and byte [0xbb85db], al
push ebp
push 0xbb85b0
jmp 0x806640
call fcn.007fb610
cmp eax, 1
je 0x806a28
mov edx, 0x7a8270
movzx ecx, byte [0xbb85f7]
not edx
and edx, 1
mov eax, edx
add eax, 0x7a8270
sete al
not al
add al, 0x40
and al, 7
movzx eax, al
bt ecx, eax
jb 0x806a10
mov al, byte [0xbb85f7]
mov ecx, edx
mov ah, 1
add ecx, 0x7a8270
sete cl
not cl
add cl, 0x40
and cl, 7
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb85f7], ah
jne 0x8068b2
mov ecx, 0x7a8270
movzx eax, al
not ecx
and ecx, 1
mov edx, ecx
add edx, 0x7a8270
sete dl
not dl
add dl, 0x40
and dl, 7
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x806927
mov eax, ecx
movzx edx, byte [0xbb85f7]
add eax, 0x7a8270
sete al
not al
add al, 0x40
and al, 7
movzx eax, al
bt edx, eax
jae 0x806903
jmp 0x806a10
add ecx, 0x7a8270
movzx ecx, byte [0xbb85f7]
sete al
not al
add al, 0x40
and al, 7
movzx eax, al
bt ecx, eax
jb 0x8069e9
mov eax, 0x7a8270
xor ecx, ecx
not eax
and eax, 1
add eax, 0x7a8270
mov eax, dword [0xbb85e0]
sete cl
xor ecx, 0xf4de7a57
add ecx, 0x840
mov edx, ecx
xor eax, ecx
shr edx, 0x1f
mov dword [0xbb85e0], eax
not eax
or edx, ecx
and cl, 7
imul edx, eax
mov eax, dword [0xbb85e4]
lea esi, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbb85e4], eax
or esi, edx
not eax
mov edx, dword [0xbb85e8]
imul eax, esi
lea esi, [eax*4]
xor edx, eax
shr eax, 0x1d
mov dword [0xbb85e8], edx
or esi, eax
not edx
mov eax, dword [0xbb85ec]
imul edx, esi
lea esi, [edx*8]
xor eax, edx
shr edx, 0x1c
mov dword [0xbb85ec], eax
or esi, edx
not eax
mov dl, 1
imul eax, esi
shl dl, cl
xor dword [0xbb85f0], eax
or byte [0xbb85f7], dl
mov eax, 0x7a8270
not eax
and eax, 1
add eax, 0x7a8270
mov al, 0xfe
sete cl
not cl
add cl, 0x40
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbb85f7], al
push 0xbb85e0
push ebx
call fcn.0078de60
add esp, 8
mov eax, 2
jmp 0x807647
mov edx, dword [esp]
mov ecx, ebx
push dword [esp + 0x40]
push 0xc26bb6
mov esi, dword [esp + 0x70]
push esi
push edi
call fcn.00807f80
add esp, 0x10
cmp byte [ebx + 0xc8], 2
jae 0x806a54
mov ebp, ebx
jmp 0x80760c
mov ebp, ebx
mov ecx, ebx
xor edx, edx
push esi
call fcn.008022f0
add esp, 4
jmp 0x80760c
test eax, eax
je 0x806a93
mov ebp, dword [esp + 0x14]
mov ebx, dword [esp + 4]
cmp eax, 1
mov edi, 0xbb8650
mov dword [esp], eax
jne 0x806d4c
jmp 0x80752f
inc edi
cmp edi, ebx
jl 0x806424
mov edi, dword [esp + 0xc]
mov eax, dword [esp + 8]
mov ebx, dword [esp + 4]
inc dword [esp + 0x40]
mov edi, dword [edi + 0xc]
test edi, edi
jne 0x805b94
cmp dword [esp + 0x5c], 0
mov ebp, dword [esp + 0x14]
mov edi, 0xbb8630
jne 0x806d3d
mov eax, dword [esp + 0x68]
test byte [eax + 4], 0x40
je 0x806d25
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x64]
call fcn.00808040
test eax, eax
je 0x806d25
mov edx, fcn.007cb0d0
xor eax, eax
movzx esi, byte [0xbb8627]
mov edi, dword [esp + 0x68]
imul edx, edx
and edx, 3
cmp edx, 2
sete al
mov ecx, eax
not ecx
lea eax, [eax + ecx*2 + 4]
and al, 7
movzx eax, al
bt esi, eax
jb 0x806cfe
mov al, byte [0xbb8627]
xor ecx, ecx
cmp edx, 2
mov ah, 1
sete cl
mov ebx, ecx
not ebx
lea ecx, [ecx + ebx*2 + 4]
and cl, 7
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb8627], ah
jne 0x806b1e
mov ecx, fcn.007cb0d0
xor edx, edx
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete dl
mov ebx, edx
not ebx
lea edx, [edx + ebx*2 + 4]
and dl, 7
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x806b96
xor eax, eax
cmp ecx, 2
movzx esi, byte [0xbb8627]
sete al
mov edx, eax
not edx
lea eax, [eax + edx*2 + 4]
and al, 7
movzx eax, al
bt esi, eax
jae 0x806b70
jmp 0x806cfe
xor eax, eax
cmp ecx, 2
movzx edx, byte [0xbb8627]
sete al
mov ecx, eax
not ecx
lea eax, [eax + ecx*2 + 4]
and al, 7
movzx eax, al
bt edx, eax
jb 0x806cd3
mov ecx, fcn.007cb0d0
xor eax, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete al
mov ecx, eax
not ecx
and ecx, 0x15b
lea ecx, [eax + ecx*2 - 0x2a6a17dc]
mov eax, dword [0xbb8600]
mov edx, ecx
shr edx, 0x1f
or edx, ecx
xor eax, ecx
and cl, 7
mov dword [0xbb8600], eax
not eax
imul edx, eax
mov eax, dword [0xbb8604]
lea esi, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbb8604], eax
or esi, edx
not eax
mov edx, dword [0xbb8608]
imul eax, esi
lea esi, [eax*4]
xor edx, eax
shr eax, 0x1d
mov dword [0xbb8608], edx
or esi, eax
not edx
mov eax, dword [str.j2]
imul edx, esi
lea esi, [edx*8]
xor eax, edx
shr edx, 0x1c
mov dword [str.j2], eax
or esi, edx
not eax
mov edx, dword [0xbb8610]
imul eax, esi
mov esi, eax
shl esi, 4
xor edx, eax
shr eax, 0x1b
mov dword [0xbb8610], edx
or eax, esi
not edx
mov ebp, dword [0xbb8614]
imul edx, eax
mov esi, edx
shl esi, 5
xor ebp, edx
shr edx, 0x1a
mov dword [0xbb8614], ebp
or edx, esi
not ebp
imul ebp, edx
mov edx, dword [0xbb8618]
mov esi, ebp
shl esi, 6
xor edx, ebp
shr ebp, 0x19
mov dword [0xbb8618], edx
or ebp, esi
not edx
mov ebx, dword [0xbb861c]
imul edx, ebp
mov esi, edx
shl esi, 7
xor ebx, edx
shr edx, 0x18
mov dword [0xbb861c], ebx
or edx, esi
not ebx
imul ebx, edx
mov dl, 1
xor dword [0xbb8620], ebx
shl dl, cl
or byte [0xbb8627], dl
mov eax, fcn.007cb0d0
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 2
sete cl
mov eax, ecx
not eax
lea ecx, [ecx + eax*2 + 4]
mov al, 0xfe
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbb8627], al
push dword [esp + 0x60]
push 0xbb8600
push 0x1c
call fcn.00783470
add esp, 0xc
mov byte [edi], 0x73
mov dword [edi + 0x2c], 0
mov eax, 1
jmp 0x807647
mov ecx, dword [esp + 0x68]
call fcn.007db950
mov ecx, eax
mov eax, 1
test ecx, ecx
jne 0x807647
mov dword [esp], 0
mov dword [esp + 0xc], 0
mov edx, fcn.00788dc0
xor eax, eax
movzx esi, byte [0xbb8643]
imul edx, edx
and edx, 3
cmp edx, 3
sete al
mov ecx, eax
xor ecx, 1
lea eax, [ecx + eax*2]
bt esi, eax
jb 0x806ebd
mov al, byte [0xbb8643]
xor ecx, ecx
cmp edx, 3
mov ah, 1
sete cl
mov ebx, ecx
xor ebx, 1
lea ecx, [ebx + ecx*2]
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb8643], ah
jne 0x806d7c
mov ecx, fcn.00788dc0
xor edx, edx
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete dl
mov ebx, edx
xor ebx, 1
lea edx, [ebx + edx*2]
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x806ded
mov ebx, dword [esp + 4]
xor eax, eax
cmp ecx, 3
movzx esi, byte [0xbb8643]
sete al
mov edx, eax
xor edx, 1
lea eax, [edx + eax*2]
bt esi, eax
jae 0x806dcc
jmp 0x806ebd
xor eax, eax
cmp ecx, 3
movzx edx, byte [0xbb8643]
mov ebx, dword [esp + 4]
sete al
mov ecx, eax
xor ecx, 1
lea eax, [ecx + eax*2]
bt edx, eax
jb 0x806e95
mov eax, fcn.00788dc0
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 3
sete cl
mov eax, ecx
xor eax, 0x5c703e09
lea ecx, [eax + ecx*2 + 0x280]
mov eax, dword [0xbb8630]
mov edx, ecx
shr edx, 0x1f
or edx, ecx
xor eax, ecx
and cl, 7
mov dword [0xbb8630], eax
not eax
imul edx, eax
mov eax, dword [0xbb8634]
lea esi, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbb8634], eax
or esi, edx
not eax
mov edx, dword [0xbb8638]
imul eax, esi
lea esi, [eax*4]
xor edx, eax
shr eax, 0x1d
mov dword [0xbb8638], edx
or esi, eax
not edx
mov al, 1
imul edx, esi
shl al, cl
xor dword [0xbb863c], edx
or byte [0xbb8643], al
mov eax, fcn.00788dc0
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 3
sete cl
mov eax, ecx
xor eax, 1
lea ecx, [eax + ecx*2]
mov al, 0xfe
xor cl, 7
rol al, cl
and byte [0xbb8643], al
mov edx, fcn.0082a140
xor eax, eax
movzx esi, byte [0xbb866b]
imul edx, edx
and edx, 3
cmp edx, 1
seta al
mov ecx, eax
not ecx
lea eax, [eax + ecx*2 + 4]
and al, 7
movzx eax, al
bt esi, eax
jb 0x80707c
mov al, byte [0xbb866b]
xor ecx, ecx
cmp edx, 1
mov ah, 1
seta cl
mov ebx, ecx
not ebx
lea ecx, [ecx + ebx*2 + 4]
and cl, 7
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb866b], ah
jne 0x806ef2
mov ecx, fcn.0082a140
xor edx, edx
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 1
seta dl
mov ebx, edx
not ebx
lea edx, [edx + ebx*2 + 4]
and dl, 7
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x806f6e
mov ebx, dword [esp + 4]
xor eax, eax
cmp ecx, 1
movzx esi, byte [0xbb866b]
seta al
mov edx, eax
not edx
lea eax, [eax + edx*2 + 4]
and al, 7
movzx eax, al
bt esi, eax
jae 0x806f48
jmp 0x80707c
xor eax, eax
cmp ecx, 1
movzx edx, byte [0xbb866b]
mov ebx, dword [esp + 4]
seta al
mov ecx, eax
not ecx
lea eax, [eax + ecx*2 + 4]
and al, 7
movzx eax, al
bt edx, eax
jb 0x807051
mov ecx, fcn.0082a140
xor eax, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 1
seta al
mov ecx, eax
not ecx
and ecx, 0x47b
lea ecx, [eax + ecx*2 + 0x30a6c384]
mov eax, dword [0xbb8650]
xor eax, ecx
mov dword [0xbb8650], eax
not eax
mov edx, dword [0xbb8654]
imul eax, ecx
and cl, 7
lea esi, [eax + eax]
xor edx, eax
shr eax, 0x1e
mov dword [0xbb8654], edx
or esi, eax
not edx
mov eax, dword [0xbb8658]
imul edx, esi
lea esi, [edx*4]
xor eax, edx
shr edx, 0x1d
mov dword [0xbb8658], eax
or esi, edx
not eax
mov edx, dword [0xbb865c]
imul eax, esi
lea esi, [eax*8]
xor edx, eax
shr eax, 0x1c
mov dword [0xbb865c], edx
or esi, eax
not edx
mov eax, dword [0xbb8660]
imul edx, esi
mov esi, edx
shl esi, 4
xor eax, edx
shr edx, 0x1b
mov dword [0xbb8660], eax
or edx, esi
not eax
imul eax, edx
mov dl, 1
xor dword [0xbb8664], eax
shl dl, cl
or byte [0xbb866b], dl
mov eax, fcn.0082a140
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 1
seta cl
mov eax, ecx
not eax
lea ecx, [ecx + eax*2 + 4]
mov al, 0xfe
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbb866b], al
test ebx, ebx
je 0x80721b
mov edx, 0x79b690
xor eax, eax
movzx esi, byte [0xbb8683]
imul edx, edx
and edx, 3
cmp edx, 2
sete al
mov ecx, eax
not ecx
lea eax, [ecx + eax*2]
and al, 7
movzx eax, al
bt esi, eax
jb 0x8071fc
mov al, byte [0xbb8683]
xor ecx, ecx
cmp edx, 2
mov ah, 1
sete cl
mov ebx, ecx
not ebx
lea ecx, [ebx + ecx*2]
and cl, 7
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb8683], ah
jne 0x8070b8
mov ecx, 0x79b690
xor edx, edx
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete dl
mov ebx, edx
not ebx
lea edx, [ebx + edx*2]
and dl, 7
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x807131
mov ebx, dword [esp + 4]
xor eax, eax
cmp ecx, 2
movzx esi, byte [0xbb8683]
sete al
mov edx, eax
not edx
lea eax, [edx + eax*2]
and al, 7
movzx eax, al
bt esi, eax
jae 0x80710c
jmp 0x8071fc
xor eax, eax
cmp ecx, 2
movzx edx, byte [0xbb8683]
sete al
mov ecx, eax
not ecx
lea eax, [ecx + eax*2]
and al, 7
movzx eax, al
bt edx, eax
jb 0x8071ce
mov eax, 0x79b690
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 2
sete cl
mov eax, ecx
xor eax, 0x2d65408f
lea ecx, [eax + ecx*2 + 0xca0]
mov eax, dword [str._n___r]
xor eax, ecx
mov dword [str._n___r], eax
not eax
mov edx, dword [0xbb8674]
imul eax, ecx
and cl, 7
lea esi, [eax + eax]
xor edx, eax
shr eax, 0x1e
mov dword [0xbb8674], edx
or esi, eax
not edx
mov eax, dword [0xbb8678]
imul edx, esi
lea esi, [edx*4]
xor eax, edx
shr edx, 0x1d
mov dword [0xbb8678], eax
or esi, edx
not eax
mov dl, 1
imul eax, esi
shl dl, cl
xor dword [0xbb867c], eax
or byte [0xbb8683], dl
mov eax, 0x79b690
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 2
sete cl
mov eax, ecx
not eax
lea ecx, [eax + ecx*2]
mov al, 0xfe
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbb8683], al
mov ebx, dword [esp + 4]
push dword [esp + 0x60]
push dword [esp + 0x60]
push ebx
push edi
push str._n___r
mov ebx, ebp
push ebp
call fcn.0078de60
add esp, 0x18
jmp 0x807524
cmp dword [esp + 0x5c], 0
je 0x8073b0
mov eax, fcn.00819c60
mov edx, 3
movzx esi, byte [0xbb8693]
mov ebx, ebp
sub edx, eax
xor eax, eax
mov ecx, edx
xor ecx, fcn.00819c60
sete al
mov ecx, eax
xor ecx, 3
lea eax, [ecx + eax*2]
bt esi, eax
jb 0x807394
mov al, byte [0xbb8693]
mov esi, edx
xor ecx, ecx
mov ah, 1
xor esi, fcn.00819c60
sete cl
mov ebx, ecx
xor ebx, 3
lea ecx, [ebx + ecx*2]
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb8693], ah
jne 0x80725e
mov edx, fcn.00819c60
mov ecx, 3
movzx eax, al
sub ecx, edx
xor edx, edx
mov esi, ecx
xor esi, fcn.00819c60
sete dl
mov ebx, edx
xor ebx, 3
lea edx, [ebx + edx*2]
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x8072dd
mov ebx, ebp
mov edx, ecx
xor eax, eax
movzx esi, byte [0xbb8693]
xor edx, fcn.00819c60
sete al
mov edx, eax
xor edx, 3
lea eax, [edx + eax*2]
bt esi, eax
jae 0x8072b7
jmp 0x807394
xor eax, eax
xor ecx, fcn.00819c60
movzx edx, byte [0xbb8693]
mov ebx, ebp
sete al
mov ecx, eax
xor ecx, 3
lea eax, [ecx + eax*2]
bt edx, eax
jb 0x807368
mov eax, fcn.00819c60
mov ecx, 3
sub ecx, eax
xor eax, eax
xor ecx, fcn.00819c60
sete al
mov ecx, eax
xor ecx, 0x6a16efb3
lea ecx, [ecx + eax*2 + 0x98]
mov eax, dword [0xbb8684]
mov edx, ecx
shr edx, 0x1f
or edx, ecx
xor eax, ecx
and cl, 7
mov dword [0xbb8684], eax
not eax
imul edx, eax
mov eax, dword [0xbb8688]
lea esi, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbb8688], eax
or esi, edx
not eax
mov dl, 1
imul eax, esi
shl dl, cl
xor dword [0xbb868c], eax
or byte [0xbb8693], dl
mov eax, fcn.00819c60
mov ecx, 3
sub ecx, eax
xor eax, eax
xor ecx, fcn.00819c60
sete al
mov ecx, eax
xor ecx, 3
lea ecx, [ecx + eax*2]
mov al, 0xfe
xor cl, 7
rol al, cl
and byte [0xbb8693], al
push dword [esp + 0x60]
push dword [esp + 0x60]
push edi
push 0xbb8684
push ebx
call fcn.0078de60
add esp, 0x14
jmp 0x807524
mov edx, fcn.007a24d0
xor eax, eax
movzx esi, byte [0xbb869f]
mov ebx, ebp
and edx, 1
inc edx
mov ecx, edx
xor ecx, fcn.007a24d0
sete al
mov ecx, eax
not ecx
lea eax, [eax + ecx*2 + 4]
and al, 7
movzx eax, al
bt esi, eax
jb 0x807511
mov al, byte [0xbb869f]
mov esi, edx
xor ecx, ecx
mov ah, 1
xor esi, fcn.007a24d0
sete cl
mov ebx, ecx
not ebx
lea ecx, [ecx + ebx*2 + 4]
and cl, 7
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb869f], ah
jne 0x8073ea
mov ecx, fcn.007a24d0
xor edx, edx
movzx eax, al
and ecx, 1
inc ecx
mov esi, ecx
xor esi, fcn.007a24d0
sete dl
mov ebx, edx
not ebx
lea edx, [edx + ebx*2 + 4]
and dl, 7
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x807471
mov ebx, ebp
mov edx, ecx
xor eax, eax
movzx esi, byte [0xbb869f]
xor edx, fcn.007a24d0
sete al
mov edx, eax
not edx
lea eax, [eax + edx*2 + 4]
and al, 7
movzx eax, al
bt esi, eax
jae 0x807446
jmp 0x807511
xor eax, eax
xor ecx, fcn.007a24d0
movzx edx, byte [0xbb869f]
sete al
mov ecx, eax
not ecx
lea eax, [eax + ecx*2 + 4]
and al, 7
movzx eax, al
bt edx, eax
jb 0x8074e4
mov ecx, fcn.007a24d0
xor eax, eax
mov esi, dword [0xbb8694]
and ecx, 1
inc ecx
xor ecx, fcn.007a24d0
sete al
mov ecx, eax
not ecx
and ecx, 3
lea ecx, [eax + ecx*2 + 0x6eb6dfac]
mov edx, ecx
xor esi, ecx
shr edx, 0x1f
mov dword [0xbb8694], esi
not esi
or edx, ecx
and cl, 7
imul edx, esi
xor dword [0xbb8698], edx
mov dl, 1
shl dl, cl
or byte [0xbb869f], dl
mov eax, fcn.007a24d0
xor ecx, ecx
mov ebx, ebp
and eax, 1
inc eax
xor eax, fcn.007a24d0
sete cl
mov eax, ecx
not eax
lea ecx, [ecx + eax*2 + 4]
mov al, 0xfe
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbb869f], al
push dword [esp + 0x60]
push edi
push 0xbb8694
push ebx
call fcn.0078de60
add esp, 0x10
mov eax, dword [esp + 0x64]
mov byte [ebx + 0x11], 1
inc dword [eax + 0x14]
cmp dword [esp + 8], 0
je 0x8075cd
mov eax, dword [esp + 0x68]
movzx eax, word [eax + 0x20]
test ax, ax
js 0x8075cd
mov edx, dword [esp + 0x3c]
movsx ecx, ax
mov edx, dword [edx]
test byte [edx + 0x24], 0x60
je 0x8075a4
mov esi, dword [edx + 4]
lea edi, [ecx + ecx*4]
test byte [esi + edi*4 + 0x10], 0x60
je 0x8075a4
movsx ecx, word [edx + 0x2a]
mov edx, 0xffffffff
mov eax, 0xffffffff
cmp ecx, 0x3f
jg 0x807598
mov eax, 0xffffffff
mov esi, 0xffffffff
xor edx, edx
shl esi, cl
shld eax, eax, cl
test cl, 0x20
cmovne eax, esi
cmove edx, esi
not eax
not edx
mov ecx, dword [esp + 8]
mov dword [ecx + 0x38], edx
mov dword [ecx + 0x3c], eax
jmp 0x8075cd
cmp ax, 0x40
jl 0x8075ac
mov cl, 0x3f
mov eax, 1
xor esi, esi
xor edx, edx
shld esi, eax, cl
shl eax, cl
test cl, 0x20
cmovne esi, eax
cmovne eax, edx
mov edx, dword [esp + 8]
or dword [edx + 0x3c], esi
or dword [edx + 0x38], eax
mov esi, dword [esp + 0x68]
mov edi, dword [esp + 0x34]
mov edx, dword [esi + 0xc]
mov ecx, edi
call fcn.007cb9e0
mov dword [esi + 0xc], 0
mov ecx, edi
mov edx, dword [esi + 0x10]
call fcn.007cb9e0
mov eax, dword [esp + 0x2c]
mov dword [esi + 0x10], 0
mov byte [esi], al
or byte [esi + 6], 0x80
mov eax, 2
cmp dword [esp], 1
jne 0x807647
test byte [esi + 6], 0x40
jne 0x807629
mov eax, dword [esp + 0xc]
mov ecx, ebp
mov edx, esi
push dword [eax + 4]
push dword [esp + 0x1c]
call fcn.00808090
add esp, 8
mov ecx, dword [esp + 0x64]
mov eax, 1
inc dword [ecx + 0x10]
mov edx, dword [esp + 0xc]
cmp edx, ecx
je 0x807647
mov ecx, dword [ecx + 0xc]
inc dword [ecx + 0x10]
cmp ecx, edx
jne 0x80763d
add esp, 0x48
pop esi
pop edi
pop ebx
pop ebp
ret