Function at 0x7fa250
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 0x7fa28a
mov dword [esp + 0x18], 0
xor esi, esi
jmp 0x7fa2f5
test byte [edi + 0x18], 6
mov esi, 0
mov dword [esp + 0x18], 0
jne 0x7fa2f5
mov esi, dword [eax + 0x14]
test esi, esi
jg 0x7fa2b0
mov dword [esp + 0x18], 0
mov esi, ebx
jmp 0x7fa2f5
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.00777e20
test eax, eax
jne 0x7fa2de
mov eax, dword [esp + 4]
mov eax, dword [eax + ebp + 0xc]
mov dword [esp + 0x18], eax
jmp 0x7fa2eb
inc edi
cmp edi, esi
jl 0x7fa2b9
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.0078a380
and eax, 1
inc eax
mov dword [esp + 0x38], eax
mov eax, fcn.00817680
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 0x7fa367
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
mov dword [esp], 0
jmp 0x7fa596
cmp dword [edi], 0
jg 0x7fa378
mov dword [esp], 0
jmp 0x7fa557
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 0x7fa434
test byte [eax + 5], 8
je 0x7fa434
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 0x7fa404
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.007fc640
add esp, 8
test eax, eax
je 0x7fa3ff
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 0x7fa3bd
cmp dword [esp + 0x5c], 0
mov esi, dword [esp + 0x28]
mov ebp, dword [esp + 0x30]
jne 0x7fa420
mov ebx, dword [esp + 4]
mov edi, dword [esp + 0x20]
jmp 0x7fa54b
test edi, edi
mov ebx, dword [esp + 4]
mov edi, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
jne 0x7fa54b
test ebx, ebx
je 0x7fa445
mov eax, dword [esp + 0x18]
cmp dword [edx + 0x48], eax
jne 0x7fa54b
cmp dword [esp + 0x5c], 0
mov dword [esp + 0x24], edx
je 0x7fa4ac
mov ebx, ebp
mov ebp, esi
mov esi, dword [esi + 0xc]
test esi, esi
mov ecx, esi
jne 0x7fa45f
mov ecx, dword [edx]
mov edx, dword [esp + 0x5c]
call fcn.00777e20
test eax, eax
je 0x7fa479
mov esi, ebp
mov ebp, ebx
mov ebx, dword [esp + 4]
jmp 0x7fa54b
test esi, esi
mov esi, ebp
mov ebp, ebx
mov ebx, dword [esp + 4]
mov edx, dword [esp + 0x24]
je 0x7fa4ac
mov eax, dword [esp + 0x14]
cmp byte [eax + 0xc8], 2
jb 0x7fa4ac
mov ecx, dword [esp + 0x14]
xor edx, edx
push dword [esp + 0x3c]
call fcn.007f6a90
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 0x7fa4d2
mov edi, dword [esp + 0x20]
jmp 0x7fa54b
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.00777e20
test eax, eax
jne 0x7fa535
cmp dword [esp], 1
jne 0x7fa508
test byte [ebp + 0x24], 4
jne 0x7fa535
mov ecx, dword [ebp + 0x34]
mov edx, dword [esp + 0x60]
call fcn.007fc6f0
test eax, eax
jne 0x7fa535
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 0x7fa547
inc esi
add ebx, 0x14
cmp esi, edi
jl 0x7fa4dd
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 0x7fa388
mov edx, dword [esp + 8]
test edx, edx
jne 0x7fa569
mov dword [esp + 8], 0
jmp 0x7fa58e
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 0x7fa587
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 0x7fa5b5
mov esi, dword [esp + 0x68]
mov edi, dword [esp + 0xc]
mov ebp, dword [esp + 8]
mov eax, dword [esp]
jmp 0x7fab50
xor ebx, ebx
cmp dword [esi + 0x78], 0
mov edi, dword [esp + 0x38]
mov ebp, esi
je 0x7fa87b
mov bl, byte [esi + 0x90]
cmp bl, 0x7e
je 0x7fa746
mov esi, dword [esp + 0x44]
xor eax, eax
movzx edx, byte [0xbb0bf7]
mov ecx, esi
xor ecx, fcn.00817680
sete al
mov ecx, eax
not ecx
lea eax, [ecx + eax*2]
and al, 7
movzx eax, al
bt edx, eax
jb 0x7fa711
mov al, byte [0xbb0bf7]
mov edx, esi
xor ecx, ecx
xor edx, fcn.00817680
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 [0xbb0bf7], dl
jne 0x7fa608
mov edx, esi
xor ecx, ecx
movzx eax, al
xor edx, fcn.00817680
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 0x7fa681
mov ecx, esi
xor eax, eax
movzx edx, byte [0xbb0bf7]
xor ecx, fcn.00817680
sete al
mov ecx, eax
not ecx
lea eax, [ecx + eax*2]
and al, 7
movzx eax, al
bt edx, eax
jae 0x7fa657
jmp 0x7fa711
mov ecx, esi
xor eax, eax
movzx edx, byte [0xbb0bf7]
xor ecx, fcn.00817680
sete al
mov ecx, eax
not ecx
lea eax, [ecx + eax*2]
and al, 7
movzx eax, al
bt edx, eax
jb 0x7fa6ed
mov ecx, esi
xor eax, eax
xor ecx, fcn.00817680
sete al
mov ecx, eax
xor ecx, 0xba38553f
lea ecx, [ecx + eax*2 + 0x1000]
mov eax, dword [0xbb0bec]
mov edx, ecx
shr edx, 0x1f
or edx, ecx
xor eax, ecx
and cl, 7
mov dword [0xbb0bec], eax
not eax
imul edx, eax
xor dword [0xbb0bf0], edx
mov dl, 1
shl dl, cl
or byte [0xbb0bf7], dl
mov ecx, esi
xor eax, eax
xor ecx, fcn.00817680
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 [0xbb0bf7], al
mov edx, dword [esp + 0x5c]
mov ecx, 0xbb0bec
call fcn.00777e20
test eax, eax
jne 0x7fa738
mov eax, dword [esp + 0x68]
mov dword [eax + 0x1c], 1
mov eax, ebp
mov ebx, dword [ebp + 0x78]
jmp 0x7fa87b
cmp bl, 0x7d
mov esi, ebp
jne 0x7fa746
xor ebx, ebx
jmp 0x7fa87b
mov edx, fcn.00782660
mov eax, fcn.00782660
movzx ebx, byte [0xbb0c03]
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 0x7fa856
mov al, byte [0xbb0c03]
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 [0xbb0c03], ah
jne 0x7fa77a
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 0x7fa7d9
xor eax, eax
cmp edx, 0xffffffff
movzx ebx, byte [0xbb0c03]
sete al
mov ecx, eax
xor ecx, 5
lea eax, [ecx + eax*2]
bt ebx, eax
jae 0x7fa7bb
jmp 0x7fa856
xor eax, eax
cmp edx, 0xffffffff
movzx ebx, byte [0xbb0c03]
sete al
mov ecx, eax
xor ecx, 5
lea eax, [ecx + eax*2]
bt ebx, eax
jb 0x7fa839
xor eax, eax
cmp edx, 0xffffffff
sete al
mov ecx, eax
xor ecx, 0xc8d44a8d
lea ecx, [ecx + eax*2 + 0x280]
mov eax, dword [0xbb0bf8]
mov esi, ecx
shr esi, 0x1f
or esi, ecx
xor eax, ecx
and cl, 7
mov dword [0xbb0bf8], eax
not eax
imul esi, eax
mov ah, 1
xor dword [0xbb0bfc], esi
shl ah, cl
mov esi, ebp
or byte [0xbb0c03], 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 [0xbb0c03], al
mov edx, dword [esp + 0x5c]
mov ecx, 0xbb0bf8
call fcn.00777e20
test eax, eax
mov ebx, 0
jne 0x7fa87b
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 0x7faa03
mov esi, dword [eax + 8]
test esi, esi
je 0x7faa03
mov ecx, edi
xor eax, eax
movzx edx, byte [0xbb0c13]
xor ecx, fcn.0078a380
sete al
mov ecx, eax
xor ecx, 3
lea eax, [eax + ecx*2]
bt edx, eax
jb 0x7fa9e0
mov al, byte [0xbb0c13]
mov edx, edi
xor ecx, ecx
xor edx, fcn.0078a380
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 [0xbb0c13], dl
jne 0x7fa8be
mov edx, edi
xor ecx, ecx
movzx eax, al
xor edx, fcn.0078a380
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 0x7fa933
mov ecx, edi
xor eax, eax
movzx edx, byte [0xbb0c13]
xor ecx, fcn.0078a380
sete al
mov ecx, eax
xor ecx, 3
lea eax, [eax + ecx*2]
bt edx, eax
jae 0x7fa90d
jmp 0x7fa9e0
mov ecx, edi
xor eax, eax
movzx edx, byte [0xbb0c13]
xor ecx, fcn.0078a380
sete al
mov ecx, eax
xor ecx, 3
lea eax, [eax + ecx*2]
bt edx, eax
jb 0x7fa9bc
mov ecx, edi
xor eax, eax
xor ecx, fcn.0078a380
sete al
mov ecx, eax
not ecx
and ecx, 0x5c3
lea edx, [eax + ecx*2]
lea ecx, [eax + ecx*2 - 0x3ede7fe8]
mov eax, dword [0xbb0c04]
or edx, 0xc1218019
xor eax, ecx
and cl, 7
mov dword [0xbb0c04], eax
not eax
imul edx, eax
mov eax, dword [0xbb0c08]
lea edi, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbb0c08], eax
or edx, edi
not eax
mov edi, dword [esp + 0x38]
imul eax, edx
mov dl, 1
xor dword [0xbb0c0c], eax
shl dl, cl
or byte [0xbb0c13], dl
mov ecx, edi
xor eax, eax
xor ecx, fcn.0078a380
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 [0xbb0c13], al
mov edx, dword [esp + 0x5c]
mov ecx, 0xbb0c04
call fcn.00777e20
test eax, eax
jne 0x7faa03
mov eax, dword [esi + 0x14]
mov ecx, dword [esp + 0x68]
mov ebx, dword [eax + 0x18]
mov dword [ecx + 0x1c], 2
test ebx, ebx
jne 0x7faa15
mov edi, dword [esp + 0xc]
mov eax, dword [esp]
xor ebx, ebx
jmp 0x7fab9c
movsx esi, word [ebx + 0x2a]
mov eax, dword [ebx + 0x48]
mov dword [esp + 0x10], ebx
test esi, esi
mov dword [esp + 0x18], eax
jg 0x7faa2c
xor ebx, ebx
jmp 0x7faa5c
mov edi, dword [ebx + 4]
xor ebx, ebx
mov ecx, dword [edi]
mov edx, dword [esp + 0x60]
call fcn.00777e20
test eax, eax
jne 0x7faa54
mov eax, dword [esp + 0x10]
mov ecx, 0xffffffff
movsx eax, word [eax + 0x28]
cmp ebx, eax
cmove ebx, ecx
jmp 0x7faa5c
inc ebx
add edi, 0x14
cmp ebx, esi
jl 0x7faa31
cmp ebx, esi
jl 0x7faa81
mov ecx, dword [esp + 0x60]
call fcn.0078c0e0
test eax, eax
je 0x7faa81
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 0x7faa99
mov esi, dword [esp + 0x68]
mov edi, dword [esp + 0xc]
mov ebp, dword [esp + 8]
jmp 0x7fab4b
inc eax
mov dword [esp], eax
mov eax, dword [esp + 0x68]
mov eax, dword [eax + 0x1c]
cmp eax, 2
jne 0x7faaf5
cmp byte [ebp + 0xc8], 2
jb 0x7faad6
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 0x7fab4b
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 0x7faacd
test ebx, ebx
jns 0x7fab03
mov esi, dword [esp + 0x68]
mov byte [esi + 1], 0x44
jmp 0x7fab2d
mov edx, 1
mov ecx, ebx
mov esi, 0xffffffff
shl edx, cl
cmp ebx, 0x1f
cmovg edx, esi
test eax, eax
jne 0x7fab23
or dword [ebp + 0x88], edx
jmp 0x7fab29
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 0x7fab9c
cmp ebx, 1
jne 0x7fab9c
test eax, eax
jne 0x7fab9c
xor eax, eax
test byte [edi + 0x18], 0x28
mov ebx, 1
jne 0x7fab9c
mov ecx, dword [esp + 0x60]
call fcn.0078c0e0
test eax, eax
jne 0x7fab7b
xor eax, eax
jmp 0x7fab9c
mov eax, dword [ebp + 0x10]
test byte [eax + 0x25], 2
je 0x7fab88
xor eax, eax
jmp 0x7fab9c
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 0x7fb218
test eax, eax
jne 0x7fb218
mov ecx, dword [edi + 0x18]
test cl, cl
mov dword [esp + 0x28], ecx
jns 0x7fb218
mov eax, dword [edi + 8]
xor edi, edi
mov ebx, dword [eax]
mov dword [esp], eax
test ebx, ebx
jle 0x7fb243
mov eax, dword [esp]
lea esi, [edi + edi*4]
test byte [eax + esi*4 + 0x10], 3
jne 0x7fb23a
mov eax, dword [esp]
mov ebp, dword [eax + esi*4 + 8]
push dword [esp + 0x60]
push ebp
call fcn.00777e00
add esp, 8
test eax, eax
jne 0x7fb23a
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 0x7fae03
mov edx, eax
and edx, 0x10
je 0x7fae03
mov edx, fcn.0079cbd0
movzx ecx, byte [0xbb0c43]
not edx
and edx, 1
mov eax, edx
add eax, fcn.0079cbd0
sete al
or al, 4
movzx eax, al
bt ecx, eax
jb 0x7fadea
mov al, byte [0xbb0c43]
mov ecx, edx
mov ah, 1
add ecx, fcn.0079cbd0
sete cl
or cl, 4
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb0c43], ah
jne 0x7fac53
mov ecx, fcn.0079cbd0
movzx eax, al
not ecx
and ecx, 1
mov edx, ecx
add edx, fcn.0079cbd0
sete dl
or dl, 4
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7facba
mov eax, ecx
movzx edx, byte [0xbb0c43]
add eax, fcn.0079cbd0
sete al
or al, 4
movzx eax, al
bt edx, eax
jae 0x7fac9a
jmp 0x7fadea
add ecx, fcn.0079cbd0
movzx ecx, byte [0xbb0c43]
sete al
or al, 4
movzx eax, al
bt ecx, eax
jb 0x7fadc8
mov eax, fcn.0079cbd0
xor ecx, ecx
not eax
and eax, 1
add eax, fcn.0079cbd0
mov eax, dword [0xbb0c20]
sete cl
or ecx, 0x211bf454
add ecx, 0x1350
xor eax, ecx
mov dword [0xbb0c20], eax
not eax
mov edx, dword [0xbb0c24]
imul eax, ecx
and cl, 7
lea esi, [eax + eax]
xor edx, eax
shr eax, 0x1e
mov dword [0xbb0c24], edx
or esi, eax
not edx
mov eax, dword [0xbb0c28]
imul edx, esi
lea esi, [edx*4]
xor eax, edx
shr edx, 0x1d
mov dword [0xbb0c28], eax
or esi, edx
not eax
mov edx, dword [0xbb0c2c]
imul eax, esi
lea esi, [eax*8]
xor edx, eax
shr eax, 0x1c
mov dword [0xbb0c2c], edx
or esi, eax
not edx
mov eax, dword [0xbb0c30]
imul edx, esi
mov esi, edx
shl esi, 4
xor eax, edx
shr edx, 0x1b
mov dword [0xbb0c30], eax
or edx, esi
not eax
imul eax, edx
mov edx, dword [0xbb0c34]
mov esi, eax
shl esi, 5
xor edx, eax
shr eax, 0x1a
mov dword [0xbb0c34], edx
or eax, esi
not edx
mov edi, dword [0xbb0c38]
imul edx, eax
mov esi, edx
shl esi, 6
xor edi, edx
shr edx, 0x19
mov dword [0xbb0c38], edi
or edx, esi
not edi
imul edi, edx
mov dl, 1
xor dword [0xbb0c3c], edi
shl dl, cl
or byte [0xbb0c43], dl
mov eax, fcn.0079cbd0
not eax
and eax, 1
add eax, fcn.0079cbd0
mov al, 0xfe
sete cl
or cl, 4
xor cl, 7
rol al, cl
and byte [0xbb0c43], al
push ebp
push 0xbb0c20
push ebx
call fcn.00782570
add esp, 0xc
mov eax, 2
jmp 0x7fbdf7
test ax, ax
jns 0x7fb022
mov eax, dword [esp + 0xc]
cmp eax, dword [esp + 0x64]
jne 0x7fae2c
and dword [esp + 0x28], 0x4000
mov eax, dword [esp + 0x64]
mov dword [esp + 0xc], eax
jne 0x7fb022
mov edx, fcn.007f4560
mov edi, fcn.007f4560
xor eax, eax
or edx, 2
xor edi, 2
mov ecx, edx
add ecx, edi
movzx ecx, byte [0xbb0c7b]
setne al
bt ecx, eax
jb 0x7fb017
mov al, byte [0xbb0c7b]
mov ecx, edx
mov ah, 1
add ecx, edi
setne cl
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb0c7b], ah
jne 0x7fae5a
mov ecx, fcn.007f4560
mov edx, fcn.007f4560
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 0x7faeb3
mov esi, ecx
xor eax, eax
add esi, edx
movzx esi, byte [0xbb0c7b]
setne al
bt esi, eax
jae 0x7fae99
jmp 0x7fb017
xor eax, eax
add ecx, edx
movzx ecx, byte [0xbb0c7b]
setne al
bt ecx, eax
jb 0x7faff5
mov eax, fcn.007f4560
mov edx, fcn.007f4560
xor ecx, ecx
xor edx, 2
or eax, 2
add eax, edx
mov eax, dword [0xbb0c50]
sete cl
xor ecx, 0x52c78911
or ecx, 0xc0
xor eax, ecx
mov dword [0xbb0c50], eax
not eax
mov edx, dword [0xbb0c54]
imul eax, ecx
and cl, 1
lea esi, [eax + eax]
xor edx, eax
shr eax, 0x1e
mov dword [0xbb0c54], edx
or esi, eax
not edx
mov eax, dword [0xbb0c58]
imul edx, esi
lea esi, [edx*4]
xor eax, edx
shr edx, 0x1d
mov dword [0xbb0c58], eax
or esi, edx
not eax
mov edx, dword [0xbb0c5c]
imul eax, esi
lea esi, [eax*8]
xor edx, eax
shr eax, 0x1c
mov dword [0xbb0c5c], edx
or esi, eax
not edx
mov eax, dword [0xbb0c60]
imul edx, esi
mov esi, edx
shl esi, 4
xor eax, edx
shr edx, 0x1b
mov dword [0xbb0c60], eax
or edx, esi
not eax
imul eax, edx
mov edx, dword [0xbb0c64]
mov esi, eax
shl esi, 5
xor edx, eax
shr eax, 0x1a
mov dword [0xbb0c64], edx
or eax, esi
not edx
imul edx, eax
mov eax, dword [0xbb0c68]
mov esi, edx
shl esi, 6
xor eax, edx
shr edx, 0x19
mov dword [0xbb0c68], eax
or edx, esi
not eax
imul eax, edx
mov edx, dword [0xbb0c6c]
mov esi, eax
shl esi, 7
xor edx, eax
shr eax, 0x18
mov dword [0xbb0c6c], edx
or eax, esi
not edx
mov edi, dword [0xbb0c70]
imul edx, eax
mov esi, edx
shl esi, 8
xor edi, edx
shr edx, 0x17
mov dword [0xbb0c70], edi
or edx, esi
not edi
imul edi, edx
mov dl, 1
xor dword [0xbb0c74], edi
shl dl, cl
or byte [0xbb0c7b], dl
mov eax, fcn.007f4560
mov ecx, fcn.007f4560
xor ecx, 2
or eax, 2
add eax, ecx
mov al, 0xfe
setne cl
xor cl, 7
rol al, cl
and byte [0xbb0c7b], al
push ebp
push 0xbb0c50
jmp 0x7fadf0
call fcn.007efd90
cmp eax, 1
je 0x7fb1d8
mov edx, 0x79c980
movzx ecx, byte [0xbb0c97]
not edx
and edx, 1
mov eax, edx
add eax, 0x79c980
sete al
not al
add al, 0x40
and al, 7
movzx eax, al
bt ecx, eax
jb 0x7fb1c0
mov al, byte [0xbb0c97]
mov ecx, edx
mov ah, 1
add ecx, 0x79c980
sete cl
not cl
add cl, 0x40
and cl, 7
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb0c97], ah
jne 0x7fb062
mov ecx, 0x79c980
movzx eax, al
not ecx
and ecx, 1
mov edx, ecx
add edx, 0x79c980
sete dl
not dl
add dl, 0x40
and dl, 7
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7fb0d7
mov eax, ecx
movzx edx, byte [0xbb0c97]
add eax, 0x79c980
sete al
not al
add al, 0x40
and al, 7
movzx eax, al
bt edx, eax
jae 0x7fb0b3
jmp 0x7fb1c0
add ecx, 0x79c980
movzx ecx, byte [0xbb0c97]
sete al
not al
add al, 0x40
and al, 7
movzx eax, al
bt ecx, eax
jb 0x7fb199
mov eax, 0x79c980
xor ecx, ecx
not eax
and eax, 1
add eax, 0x79c980
mov eax, dword [0xbb0c80]
sete cl
xor ecx, 0xf4de7a57
add ecx, 0x840
mov edx, ecx
xor eax, ecx
shr edx, 0x1f
mov dword [0xbb0c80], eax
not eax
or edx, ecx
and cl, 7
imul edx, eax
mov eax, dword [0xbb0c84]
lea esi, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbb0c84], eax
or esi, edx
not eax
mov edx, dword [0xbb0c88]
imul eax, esi
lea esi, [eax*4]
xor edx, eax
shr eax, 0x1d
mov dword [0xbb0c88], edx
or esi, eax
not edx
mov eax, dword [0xbb0c8c]
imul edx, esi
lea esi, [edx*8]
xor eax, edx
shr edx, 0x1c
mov dword [0xbb0c8c], eax
or esi, edx
not eax
mov dl, 1
imul eax, esi
shl dl, cl
xor dword [0xbb0c90], eax
or byte [0xbb0c97], dl
mov eax, 0x79c980
not eax
and eax, 1
add eax, 0x79c980
mov al, 0xfe
sete cl
not cl
add cl, 0x40
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbb0c97], al
push 0xbb0c80
push ebx
call fcn.00782570
add esp, 8
mov eax, 2
jmp 0x7fbdf7
mov edx, dword [esp]
mov ecx, ebx
push dword [esp + 0x40]
push 0xc1f2c6
mov esi, dword [esp + 0x70]
push esi
push edi
call fcn.007fc730
add esp, 0x10
cmp byte [ebx + 0xc8], 2
jae 0x7fb204
mov ebp, ebx
jmp 0x7fbdbc
mov ebp, ebx
mov ecx, ebx
xor edx, edx
push esi
call fcn.007f6a90
add esp, 4
jmp 0x7fbdbc
test eax, eax
je 0x7fb243
mov ebp, dword [esp + 0x14]
mov ebx, dword [esp + 4]
cmp eax, 1
mov edi, 0xbb0cf0
mov dword [esp], eax
jne 0x7fb4fc
jmp 0x7fbcdf
inc edi
cmp edi, ebx
jl 0x7fabd4
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 0x7fa344
cmp dword [esp + 0x5c], 0
mov ebp, dword [esp + 0x14]
mov edi, 0xbb0cd0
jne 0x7fb4ed
mov eax, dword [esp + 0x68]
test byte [eax + 4], 0x40
je 0x7fb4d5
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x64]
call fcn.007fc7f0
test eax, eax
je 0x7fb4d5
mov edx, fcn.007bf7d0
xor eax, eax
movzx esi, byte [0xbb0cc7]
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 0x7fb4ae
mov al, byte [0xbb0cc7]
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 [0xbb0cc7], ah
jne 0x7fb2ce
mov ecx, fcn.007bf7d0
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 0x7fb346
xor eax, eax
cmp ecx, 2
movzx esi, byte [0xbb0cc7]
sete al
mov edx, eax
not edx
lea eax, [eax + edx*2 + 4]
and al, 7
movzx eax, al
bt esi, eax
jae 0x7fb320
jmp 0x7fb4ae
xor eax, eax
cmp ecx, 2
movzx edx, byte [0xbb0cc7]
sete al
mov ecx, eax
not ecx
lea eax, [eax + ecx*2 + 4]
and al, 7
movzx eax, al
bt edx, eax
jb 0x7fb483
mov ecx, fcn.007bf7d0
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 [0xbb0ca0]
mov edx, ecx
shr edx, 0x1f
or edx, ecx
xor eax, ecx
and cl, 7
mov dword [0xbb0ca0], eax
not eax
imul edx, eax
mov eax, dword [0xbb0ca4]
lea esi, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbb0ca4], eax
or esi, edx
not eax
mov edx, dword [0xbb0ca8]
imul eax, esi
lea esi, [eax*4]
xor edx, eax
shr eax, 0x1d
mov dword [0xbb0ca8], 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 [0xbb0cb0]
imul eax, esi
mov esi, eax
shl esi, 4
xor edx, eax
shr eax, 0x1b
mov dword [0xbb0cb0], edx
or eax, esi
not edx
mov ebp, dword [0xbb0cb4]
imul edx, eax
mov esi, edx
shl esi, 5
xor ebp, edx
shr edx, 0x1a
mov dword [0xbb0cb4], ebp
or edx, esi
not ebp
imul ebp, edx
mov edx, dword [0xbb0cb8]
mov esi, ebp
shl esi, 6
xor edx, ebp
shr ebp, 0x19
mov dword [0xbb0cb8], edx
or ebp, esi
not edx
mov ebx, dword [0xbb0cbc]
imul edx, ebp
mov esi, edx
shl esi, 7
xor ebx, edx
shr edx, 0x18
mov dword [0xbb0cbc], ebx
or edx, esi
not ebx
imul ebx, edx
mov dl, 1
xor dword [0xbb0cc0], ebx
shl dl, cl
or byte [0xbb0cc7], dl
mov eax, fcn.007bf7d0
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 [0xbb0cc7], al
push dword [esp + 0x60]
push 0xbb0ca0
push 0x1c
call fcn.00777b70
add esp, 0xc
mov byte [edi], 0x73
mov dword [edi + 0x2c], 0
mov eax, 1
jmp 0x7fbdf7
mov ecx, dword [esp + 0x68]
call fcn.007d00b0
mov ecx, eax
mov eax, 1
test ecx, ecx
jne 0x7fbdf7
mov dword [esp], 0
mov dword [esp + 0xc], 0
mov edx, fcn.0077d4d0
xor eax, eax
movzx esi, byte [0xbb0ce3]
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 0x7fb66d
mov al, byte [0xbb0ce3]
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 [0xbb0ce3], ah
jne 0x7fb52c
mov ecx, fcn.0077d4d0
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 0x7fb59d
mov ebx, dword [esp + 4]
xor eax, eax
cmp ecx, 3
movzx esi, byte [0xbb0ce3]
sete al
mov edx, eax
xor edx, 1
lea eax, [edx + eax*2]
bt esi, eax
jae 0x7fb57c
jmp 0x7fb66d
xor eax, eax
cmp ecx, 3
movzx edx, byte [0xbb0ce3]
mov ebx, dword [esp + 4]
sete al
mov ecx, eax
xor ecx, 1
lea eax, [ecx + eax*2]
bt edx, eax
jb 0x7fb645
mov eax, fcn.0077d4d0
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 [0xbb0cd0]
mov edx, ecx
shr edx, 0x1f
or edx, ecx
xor eax, ecx
and cl, 7
mov dword [0xbb0cd0], eax
not eax
imul edx, eax
mov eax, dword [0xbb0cd4]
lea esi, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbb0cd4], eax
or esi, edx
not eax
mov edx, dword [0xbb0cd8]
imul eax, esi
lea esi, [eax*4]
xor edx, eax
shr eax, 0x1d
mov dword [0xbb0cd8], edx
or esi, eax
not edx
mov al, 1
imul edx, esi
shl al, cl
xor dword [0xbb0cdc], edx
or byte [0xbb0ce3], al
mov eax, fcn.0077d4d0
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 [0xbb0ce3], al
mov edx, fcn.0081e900
xor eax, eax
movzx esi, byte [0xbb0d0b]
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 0x7fb82c
mov al, byte [0xbb0d0b]
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 [0xbb0d0b], ah
jne 0x7fb6a2
mov ecx, fcn.0081e900
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 0x7fb71e
mov ebx, dword [esp + 4]
xor eax, eax
cmp ecx, 1
movzx esi, byte [0xbb0d0b]
seta al
mov edx, eax
not edx
lea eax, [eax + edx*2 + 4]
and al, 7
movzx eax, al
bt esi, eax
jae 0x7fb6f8
jmp 0x7fb82c
xor eax, eax
cmp ecx, 1
movzx edx, byte [0xbb0d0b]
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 0x7fb801
mov ecx, fcn.0081e900
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 [0xbb0cf0]
xor eax, ecx
mov dword [0xbb0cf0], eax
not eax
mov edx, dword [0xbb0cf4]
imul eax, ecx
and cl, 7
lea esi, [eax + eax]
xor edx, eax
shr eax, 0x1e
mov dword [0xbb0cf4], edx
or esi, eax
not edx
mov eax, dword [0xbb0cf8]
imul edx, esi
lea esi, [edx*4]
xor eax, edx
shr edx, 0x1d
mov dword [0xbb0cf8], eax
or esi, edx
not eax
mov edx, dword [0xbb0cfc]
imul eax, esi
lea esi, [eax*8]
xor edx, eax
shr eax, 0x1c
mov dword [0xbb0cfc], edx
or esi, eax
not edx
mov eax, dword [0xbb0d00]
imul edx, esi
mov esi, edx
shl esi, 4
xor eax, edx
shr edx, 0x1b
mov dword [0xbb0d00], eax
or edx, esi
not eax
imul eax, edx
mov dl, 1
xor dword [0xbb0d04], eax
shl dl, cl
or byte [0xbb0d0b], dl
mov eax, fcn.0081e900
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 [0xbb0d0b], al
test ebx, ebx
je 0x7fb9cb
mov edx, 0x78fd90
xor eax, eax
movzx esi, byte [0xbb0d23]
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 0x7fb9ac
mov al, byte [0xbb0d23]
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 [0xbb0d23], ah
jne 0x7fb868
mov ecx, 0x78fd90
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 0x7fb8e1
mov ebx, dword [esp + 4]
xor eax, eax
cmp ecx, 2
movzx esi, byte [0xbb0d23]
sete al
mov edx, eax
not edx
lea eax, [edx + eax*2]
and al, 7
movzx eax, al
bt esi, eax
jae 0x7fb8bc
jmp 0x7fb9ac
xor eax, eax
cmp ecx, 2
movzx edx, byte [0xbb0d23]
sete al
mov ecx, eax
not ecx
lea eax, [ecx + eax*2]
and al, 7
movzx eax, al
bt edx, eax
jb 0x7fb97e
mov eax, 0x78fd90
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 [0xbb0d14]
imul eax, ecx
and cl, 7
lea esi, [eax + eax]
xor edx, eax
shr eax, 0x1e
mov dword [0xbb0d14], edx
or esi, eax
not edx
mov eax, dword [0xbb0d18]
imul edx, esi
lea esi, [edx*4]
xor eax, edx
shr edx, 0x1d
mov dword [0xbb0d18], eax
or esi, edx
not eax
mov dl, 1
imul eax, esi
shl dl, cl
xor dword [0xbb0d1c], eax
or byte [0xbb0d23], dl
mov eax, 0x78fd90
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 [0xbb0d23], 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.00782570
add esp, 0x18
jmp 0x7fbcd4
cmp dword [esp + 0x5c], 0
je 0x7fbb60
mov eax, fcn.0080e430
mov edx, 3
movzx esi, byte [0xbb0d33]
mov ebx, ebp
sub edx, eax
xor eax, eax
mov ecx, edx
xor ecx, fcn.0080e430
sete al
mov ecx, eax
xor ecx, 3
lea eax, [ecx + eax*2]
bt esi, eax
jb 0x7fbb44
mov al, byte [0xbb0d33]
mov esi, edx
xor ecx, ecx
mov ah, 1
xor esi, fcn.0080e430
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 [0xbb0d33], ah
jne 0x7fba0e
mov edx, fcn.0080e430
mov ecx, 3
movzx eax, al
sub ecx, edx
xor edx, edx
mov esi, ecx
xor esi, fcn.0080e430
sete dl
mov ebx, edx
xor ebx, 3
lea edx, [ebx + edx*2]
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7fba8d
mov ebx, ebp
mov edx, ecx
xor eax, eax
movzx esi, byte [0xbb0d33]
xor edx, fcn.0080e430
sete al
mov edx, eax
xor edx, 3
lea eax, [edx + eax*2]
bt esi, eax
jae 0x7fba67
jmp 0x7fbb44
xor eax, eax
xor ecx, fcn.0080e430
movzx edx, byte [0xbb0d33]
mov ebx, ebp
sete al
mov ecx, eax
xor ecx, 3
lea eax, [ecx + eax*2]
bt edx, eax
jb 0x7fbb18
mov eax, fcn.0080e430
mov ecx, 3
sub ecx, eax
xor eax, eax
xor ecx, fcn.0080e430
sete al
mov ecx, eax
xor ecx, 0x6a16efb3
lea ecx, [ecx + eax*2 + 0x98]
mov eax, dword [0xbb0d24]
mov edx, ecx
shr edx, 0x1f
or edx, ecx
xor eax, ecx
and cl, 7
mov dword [0xbb0d24], eax
not eax
imul edx, eax
mov eax, dword [0xbb0d28]
lea esi, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbb0d28], eax
or esi, edx
not eax
mov dl, 1
imul eax, esi
shl dl, cl
xor dword [0xbb0d2c], eax
or byte [0xbb0d33], dl
mov eax, fcn.0080e430
mov ecx, 3
sub ecx, eax
xor eax, eax
xor ecx, fcn.0080e430
sete al
mov ecx, eax
xor ecx, 3
lea ecx, [ecx + eax*2]
mov al, 0xfe
xor cl, 7
rol al, cl
and byte [0xbb0d33], al
push dword [esp + 0x60]
push dword [esp + 0x60]
push edi
push 0xbb0d24
push ebx
call fcn.00782570
add esp, 0x14
jmp 0x7fbcd4
mov edx, fcn.00796bc0
xor eax, eax
movzx esi, byte [0xbb0d3f]
mov ebx, ebp
and edx, 1
inc edx
mov ecx, edx
xor ecx, fcn.00796bc0
sete al
mov ecx, eax
not ecx
lea eax, [eax + ecx*2 + 4]
and al, 7
movzx eax, al
bt esi, eax
jb 0x7fbcc1
mov al, byte [0xbb0d3f]
mov esi, edx
xor ecx, ecx
mov ah, 1
xor esi, fcn.00796bc0
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 [0xbb0d3f], ah
jne 0x7fbb9a
mov ecx, fcn.00796bc0
xor edx, edx
movzx eax, al
and ecx, 1
inc ecx
mov esi, ecx
xor esi, fcn.00796bc0
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 0x7fbc21
mov ebx, ebp
mov edx, ecx
xor eax, eax
movzx esi, byte [0xbb0d3f]
xor edx, fcn.00796bc0
sete al
mov edx, eax
not edx
lea eax, [eax + edx*2 + 4]
and al, 7
movzx eax, al
bt esi, eax
jae 0x7fbbf6
jmp 0x7fbcc1
xor eax, eax
xor ecx, fcn.00796bc0
movzx edx, byte [0xbb0d3f]
sete al
mov ecx, eax
not ecx
lea eax, [eax + ecx*2 + 4]
and al, 7
movzx eax, al
bt edx, eax
jb 0x7fbc94
mov ecx, fcn.00796bc0
xor eax, eax
mov esi, dword [0xbb0d34]
and ecx, 1
inc ecx
xor ecx, fcn.00796bc0
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 [0xbb0d34], esi
not esi
or edx, ecx
and cl, 7
imul edx, esi
xor dword [0xbb0d38], edx
mov dl, 1
shl dl, cl
or byte [0xbb0d3f], dl
mov eax, fcn.00796bc0
xor ecx, ecx
mov ebx, ebp
and eax, 1
inc eax
xor eax, fcn.00796bc0
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 [0xbb0d3f], al
push dword [esp + 0x60]
push edi
push 0xbb0d34
push ebx
call fcn.00782570
add esp, 0x10
mov eax, dword [esp + 0x64]
mov byte [ebx + 0x11], 1
inc dword [eax + 0x14]
cmp dword [esp + 8], 0
je 0x7fbd7d
mov eax, dword [esp + 0x68]
movzx eax, word [eax + 0x20]
test ax, ax
js 0x7fbd7d
mov edx, dword [esp + 0x3c]
movsx ecx, ax
mov edx, dword [edx]
test byte [edx + 0x24], 0x60
je 0x7fbd54
mov esi, dword [edx + 4]
lea edi, [ecx + ecx*4]
test byte [esi + edi*4 + 0x10], 0x60
je 0x7fbd54
movsx ecx, word [edx + 0x2a]
mov edx, 0xffffffff
mov eax, 0xffffffff
cmp ecx, 0x3f
jg 0x7fbd48
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 0x7fbd7d
cmp ax, 0x40
jl 0x7fbd5c
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.007c00e0
mov dword [esi + 0xc], 0
mov ecx, edi
mov edx, dword [esi + 0x10]
call fcn.007c00e0
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 0x7fbdf7
test byte [esi + 6], 0x40
jne 0x7fbdd9
mov eax, dword [esp + 0xc]
mov ecx, ebp
mov edx, esi
push dword [eax + 4]
push dword [esp + 0x1c]
call fcn.007fc840
add esp, 8
mov ecx, dword [esp + 0x64]
mov eax, 1
inc dword [ecx + 0x10]
mov edx, dword [esp + 0xc]
cmp edx, ecx
je 0x7fbdf7
mov ecx, dword [ecx + 0xc]
inc dword [ecx + 0x10]
cmp ecx, edx
jne 0x7fbded
add esp, 0x48
pop esi
pop edi
pop ebx
pop ebp
ret