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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xb0
mov eax, dword [0xbd33e0]
xor eax, ebp
mov dword [esp + 0xa8], eax
mov dword [esp + 0xa4], 1
movzx eax, byte [edx]
fldz
fldz
mov al, byte [eax + 0xb4bbb8]
add al, 0xd5
cmp al, 0x4c
ja case.0x842f71.212
mov edi, dword [ebp + 8]
movzx eax, al
fstp st(1)
fstp st(0)
fldz
mov esi, edx
mov ebx, ecx
fldz
jmp dword [eax*4 + 0xb5a08c]
mov edx, 0x8098a0
fstp st(1)
fstp st(0)
xor eax, eax
not edx
and edx, 1
mov ecx, edx
add ecx, 0x8098a0
movzx ecx, byte [0xbbd83b]
setne al
bt ecx, eax
jb 0x84309f
mov al, byte [0xbbd83b]
mov ecx, edx
mov ah, 1
add ecx, 0x8098a0
setne cl
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbbd83b], ah
jne 0x842fa8
mov ecx, 0x8098a0
movzx eax, al
not ecx
and ecx, 1
mov edx, ecx
add edx, 0x8098a0
setne dl
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x843007
mov edx, ecx
xor eax, eax
add edx, 0x8098a0
movzx edx, byte [0xbbd83b]
setne al
bt edx, eax
jae 0x842fe9
jmp 0x84309f
xor eax, eax
add ecx, 0x8098a0
movzx ecx, byte [0xbbd83b]
setne al
bt ecx, eax
jb 0x843080
mov eax, 0x8098a0
xor ecx, ecx
mov edx, dword [0xbbd82c]
not eax
and eax, 1
add eax, 0x8098a0
sete cl
xor ecx, 0x46d00e9
lea eax, [ecx + 0x1000]
and cl, 1
xor edx, eax
mov dword [0xbbd82c], edx
not edx
imul edx, eax
mov eax, dword [0xbbd830]
lea edi, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbbd830], eax
or edx, edi
not eax
mov edi, dword [ebp + 8]
imul eax, edx
mov dl, 1
xor dword [0xbbd834], eax
shl dl, cl
or byte [0xbbd83b], dl
mov eax, 0x8098a0
not eax
and eax, 1
add eax, 0x8098a0
mov al, 0xfe
setne cl
xor cl, 7
rol al, cl
and byte [0xbbd83b], al
push 0xbbd82c
push esi
call fcn.00783700
add esp, 8
test eax, eax
fldz
fldz
jne case.0x842f71.212
mov ecx, ebx
fstp st(1)
fstp st(0)
call fcn.00844970
test eax, eax
fldz
fldz
je case.0x842f71.212
mov ecx, edi
fstp st(1)
fstp st(0)
call fcn.00842b20
lea eax, [esp + 0xa4]
mov ecx, edi
mov edx, ebx
push eax
call fcn.00845350
add esp, 4
add dword [edi], eax
adc dword [edi + 4], edx
jmp 0x8441eb
mov edx, 0x7d1a70
fstp st(1)
fstp st(0)
movzx ecx, byte [0xbbd84b]
imul edx, edx
and edx, 3
cmp edx, 2
sete al
or al, 2
movzx eax, al
bt ecx, eax
jb 0x843220
mov al, byte [0xbbd84b]
cmp edx, 2
mov ah, 1
sete cl
or cl, 2
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbbd84b], ah
jne 0x843128
mov ecx, 0x7d1a70
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete dl
or dl, 2
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x843182
cmp ecx, 2
movzx edx, byte [0xbbd84b]
sete al
or al, 2
movzx eax, al
bt edx, eax
jae 0x843166
jmp 0x843220
cmp ecx, 2
movzx edx, byte [0xbbd84b]
sete al
or al, 2
movzx eax, al
bt edx, eax
jb 0x8431ff
mov eax, 0x7d1a70
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 2
mov eax, dword [0xbbd83c]
sete cl
or ecx, 0x8c400e32
add ecx, 0x208
mov edx, ecx
xor eax, ecx
shr edx, 0x1f
mov dword [0xbbd83c], eax
not eax
or edx, ecx
and cl, 7
imul edx, eax
mov eax, dword [0xbbd840]
lea edi, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbbd840], eax
or edx, edi
not eax
mov edi, dword [ebp + 8]
imul eax, edx
mov dl, 1
xor dword [0xbbd844], eax
shl dl, cl
or byte [0xbbd84b], dl
mov eax, 0x7d1a70
imul eax, eax
and eax, 3
cmp eax, 2
mov al, 0xfe
sete cl
or cl, 2
xor cl, 7
rol al, cl
and byte [0xbbd84b], al
push 0xbbd83c
push esi
call fcn.00783700
add esp, 8
test eax, eax
jne 0x8432d7
cmp byte [edi + 0x29], 0
je 0x8432d7
fld qword [edi + 0x20]
fmul dword [0xb4ba3c]
fadd qword [0xb4ba98]
fst qword [esp + 0x98]
fldz
fxch st(1)
fucomi st(1)
fstp st(1)
fldz
fxch st(1)
jb case.0x842f71.212
fstp st(1)
fld qword [0xb4baa0]
fucompi st(1)
fldz
fxch st(1)
jbe case.0x842f71.212
mov ecx, edi
fstp st(1)
fstp qword [esp + 0x10]
call fcn.00845720
fld qword [esp + 0x10]
fadd dword [0xb4ba44]
fnstcw word [esp + 0xe]
movzx eax, word [esp + 0xe]
mov word [esp + 0xe], 0xc7f
fldcw word [esp + 0xe]
mov word [esp + 0xe], ax
fistp qword [esp + 0x58]
fldcw word [esp + 0xe]
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x5c]
mov dword [edi + 4], ecx
mov dword [edi], eax
mov word [edi + 0x28], 1
mov dword [esp + 0xa4], 0
jmp 0x8441f2
mov edx, fcn.008465e0
movzx ecx, byte [0xbbd857]
imul edx, edx
and edx, 3
cmp edx, 3
setne al
or al, 4
movzx eax, al
bt ecx, eax
jb 0x8433de
mov al, byte [0xbbd857]
cmp edx, 3
mov ah, 1
setne cl
or cl, 4
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbbd857], ah
jne 0x843302
mov ecx, fcn.008465e0
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 3
setne dl
or dl, 4
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x84335c
cmp ecx, 3
movzx edx, byte [0xbbd857]
setne al
or al, 4
movzx eax, al
bt edx, eax
jae 0x843340
jmp 0x8433de
cmp ecx, 3
movzx edx, byte [0xbbd857]
setne al
or al, 4
movzx eax, al
bt edx, eax
jb 0x8433bd
mov eax, fcn.008465e0
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 3
mov eax, dword [0xbbd84c]
sete cl
xor ecx, 0x54a37d51
add ecx, 0x554
mov edx, ecx
xor eax, ecx
shr edx, 0x1f
mov dword [0xbbd84c], eax
not eax
or edx, ecx
and cl, 7
imul edx, eax
xor dword [0xbbd850], edx
mov dl, 1
shl dl, cl
or byte [0xbbd857], dl
mov eax, fcn.008465e0
imul eax, eax
and eax, 3
cmp eax, 3
mov al, 0xfe
setne cl
or cl, 4
xor cl, 7
rol al, cl
and byte [0xbbd857], al
push 0xbbd84c
push esi
call fcn.00783700
add esp, 8
test eax, eax
fldz
fldz
jne case.0x842f71.212
mov ecx, ebx
fstp st(1)
fstp st(0)
call fcn.00844970
test eax, eax
fldz
fldz
je case.0x842f71.212
fstp st(1)
fstp st(0)
cmp byte [edi + 0x2d], 0
jne 0x843eaf
mov ecx, edi
call fcn.00842b20
lea eax, [esp + 0xa4]
mov edx, ebx
mov ecx, edi
push eax
call fcn.00845350
add esp, 4
cmp dword [esp + 0xa4], 0
jne 0x843475
sub dword [edi], eax
mov ecx, edi
mov esi, eax
sbb dword [edi + 4], edx
mov dword [esp + 0x10], edx
call fcn.00845720
lea eax, [esp + 0xa4]
mov ecx, edi
mov edx, ebx
push eax
call fcn.00845350
add esp, 4
mov ecx, dword [esp + 0x10]
sub esi, eax
sbb ecx, edx
add dword [edi], esi
adc dword [edi + 4], ecx
mov byte [edi + 0x2d], 1
jmp 0x8441f2
mov edx, fcn.008011a0
xor eax, eax
fstp st(1)
fstp st(0)
movzx ebx, byte [0xbbd867]
imul edx, edx
and edx, 3
cmp edx, 2
sete al
mov ecx, eax
xor ecx, 1
lea eax, [ecx + eax*2]
bt ebx, eax
jb 0x8435c9
mov al, byte [0xbbd867]
xor ecx, ecx
cmp edx, 2
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 [0xbbd867], ah
jne 0x8434b2
mov ecx, fcn.008011a0
xor edx, edx
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete dl
mov ebx, edx
xor ebx, 1
lea edx, [ebx + edx*2]
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x84351f
xor eax, eax
cmp ecx, 2
movzx ebx, byte [0xbbd867]
sete al
mov edx, eax
xor edx, 1
lea eax, [edx + eax*2]
bt ebx, eax
jae 0x8434fe
jmp 0x8435c9
xor eax, eax
cmp ecx, 2
movzx edx, byte [0xbbd867]
sete al
mov ecx, eax
xor ecx, 1
lea eax, [ecx + eax*2]
bt edx, eax
jb 0x8435a1
mov eax, fcn.008011a0
xor ecx, ecx
mov ebx, edi
imul eax, eax
and eax, 3
cmp eax, 2
sete cl
mov eax, ecx
xor eax, 0x45329579
lea ecx, [eax + ecx*2 + 8]
mov eax, dword [0xbbd858]
mov edx, ecx
shr edx, 0x1f
or edx, ecx
xor eax, ecx
and cl, 7
mov dword [0xbbd858], eax
not eax
imul edx, eax
mov eax, dword [0xbbd85c]
lea edi, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbbd85c], eax
or edi, edx
not eax
mov dl, 1
imul eax, edi
shl dl, cl
mov edi, ebx
xor dword [0xbbd860], eax
or byte [0xbbd867], dl
mov eax, fcn.008011a0
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 2
sete cl
mov eax, ecx
xor eax, 1
lea ecx, [eax + ecx*2]
mov al, 0xfe
xor cl, 7
rol al, cl
and byte [0xbbd867], al
push 8
push 0xbbd858
push esi
call fcn.00783750
add esp, 0xc
test eax, eax
fldz
fldz
jne case.0x842f71.212
add esi, 8
fstp st(1)
fstp st(0)
mov ecx, esi
call fcn.00783170
lea edx, [esp + 0x98]
mov ecx, esi
push 1
push eax
call fcn.007b0530
add esp, 8
test eax, eax
fldz
fldz
jle case.0x842f71.212
fstp st(1)
fstp st(0)
fld qword [esp + 0x98]
fnstcw word [esp + 0xc]
movzx eax, word [esp + 0xc]
mov word [esp + 0xc], 0xc7f
fldcw word [esp + 0xc]
mov word [esp + 0xc], ax
fist dword [esp + 0x40]
fldcw word [esp + 0xc]
mov ebx, dword [esp + 0x40]
mov dword [esp + 0x44], ebx
fild dword [esp + 0x44]
fld dword [0xb4ba90]
fucompi st(2)
jbe case.0x842f71.212
test ebx, ebx
js case.0x842f71.212
fxch st(1)
fucompi st(1)
fstp st(0)
fldz
fldz
jne case.0x842f71.212
jp case.0x842f71.212
mov ecx, edi
fstp st(1)
fstp st(0)
call fcn.00845730
mov ecx, edi
mov byte [edi + 0x2c], 0
mov byte [edi + 0x28], 0
call fcn.00842b20
mov edx, dword [edi + 4]
mov eax, dword [edi]
mov dword [esp + 0x24], eax
add eax, 0x7b98a00
mov ecx, edx
mov dword [esp + 0x10], edx
adc ecx, 0
push 0
push 0x5265c00
push ecx
push eax
call fcn.0098a070
push 0
push 7
push edx
push eax
call fcn.0098a120
mov ecx, eax
mov edi, ebx
mov dword [esp + 0x18], eax
mov esi, edx
mov eax, ecx
sar edi, 0x1f
add eax, 0xfffffff9
adc edx, 0xffffffff
cmp ebx, ecx
mov ecx, edi
sbb ecx, esi
cmovge eax, dword [esp + 0x18]
cmovge edx, esi
sub ebx, eax
sbb edi, edx
mov edx, 0x5265c00
mov eax, ebx
imul ecx, edi, 0x5265c00
mul edx
add edx, ecx
add eax, dword [esp + 0x24]
mov ecx, dword [ebp + 8]
adc edx, dword [esp + 0x10]
mov dword [ecx], eax
mov dword [ecx + 4], edx
call fcn.00845720
mov dword [esp + 0xa4], 0
jmp 0x8441f2
mov edx, 0x994e50
xor eax, eax
fstp st(1)
fstp st(0)
movzx ebx, byte [0xbbd877]
and edx, 1
inc edx
mov ecx, edx
xor ecx, 0x994e50
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 6]
and al, 7
movzx eax, al
bt ebx, eax
jb 0x8438a1
mov al, byte [0xbbd877]
mov edi, edx
xor ecx, ecx
mov ah, 1
xor edi, 0x994e50
sete cl
mov ebx, ecx
xor ebx, 1
lea ecx, [ecx + ebx*2 + 6]
and cl, 7
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbbd877], ah
jne 0x84375b
mov ecx, 0x994e50
xor edx, edx
movzx eax, al
and ecx, 1
inc ecx
mov edi, ecx
xor edi, 0x994e50
sete dl
mov ebx, edx
xor ebx, 1
lea edx, [edx + ebx*2 + 6]
and dl, 7
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x8437e6
mov edi, dword [ebp + 8]
mov edx, ecx
xor eax, eax
movzx ebx, byte [0xbbd877]
xor edx, 0x994e50
sete al
mov edx, eax
xor edx, 1
lea eax, [eax + edx*2 + 6]
and al, 7
movzx eax, al
bt ebx, eax
jae 0x8437ba
jmp 0x8438a1
xor eax, eax
xor ecx, 0x994e50
movzx edx, byte [0xbbd877]
mov edi, dword [ebp + 8]
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 6]
and al, 7
movzx eax, al
bt edx, eax
jb 0x843875
mov ecx, 0x994e50
xor eax, eax
and ecx, 1
inc ecx
xor ecx, 0x994e50
sete al
mov ecx, eax
not ecx
and ecx, 0x321
lea ecx, [eax + ecx*2 + 0x1928845e]
mov eax, dword [0xbbd868]
xor eax, ecx
mov dword [0xbbd868], eax
not eax
mov edx, dword [0xbbd86c]
imul eax, ecx
and cl, 7
lea edi, [eax + eax]
xor edx, eax
shr eax, 0x1e
mov dword [0xbbd86c], edx
or edi, eax
not edx
mov al, 1
imul edx, edi
mov edi, dword [ebp + 8]
shl al, cl
xor dword [0xbbd870], edx
or byte [0xbbd877], al
mov eax, 0x994e50
xor ecx, ecx
and eax, 1
inc eax
xor eax, 0x994e50
sete cl
mov eax, ecx
xor eax, 1
lea ecx, [ecx + eax*2 + 6]
mov al, 0xfe
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbbd877], al
push 9
push 0xbbd868
push esi
call fcn.00783750
add esp, 0xc
test eax, eax
fldz
fldz
jne case.0x842f71.212
fstp st(1)
fstp st(0)
cmp byte [edi + 0x28], 0
fldz
fldz
jne 0x8438eb
fstp st(1)
fstp st(0)
cmp byte [edi + 0x2a], 0
fldz
fldz
jne 0x8438eb
fstp st(1)
fstp st(0)
cmp byte [edi + 0x2b], 0
fldz
fldz
je case.0x842f71.212
mov edx, fcn.007e7c40
xor eax, eax
fstp st(1)
fstp st(0)
movzx ebx, byte [0xbbd883]
imul edx, edx
and edx, 3
cmp edx, 1
seta al
mov ecx, eax
xor ecx, 1
lea eax, [ecx + eax*2]
bt ebx, eax
jb 0x843a1e
mov al, byte [0xbbd883]
xor ecx, ecx
cmp edx, 1
mov ah, 1
seta cl
mov ebx, ecx
xor ebx, 1
lea ecx, [ebx + ecx*2]
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbbd883], ah
jne 0x84391f
mov ecx, fcn.007e7c40
xor edx, edx
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 1
seta dl
mov ebx, edx
xor ebx, 1
lea edx, [ebx + edx*2]
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x84398c
xor eax, eax
cmp ecx, 1
movzx ebx, byte [0xbbd883]
seta al
mov edx, eax
xor edx, 1
lea eax, [edx + eax*2]
bt ebx, eax
jae 0x84396b
jmp 0x843a1e
xor eax, eax
cmp ecx, 1
movzx edx, byte [0xbbd883]
seta al
mov ecx, eax
xor ecx, 1
lea eax, [ecx + eax*2]
bt edx, eax
jb 0x8439f6
mov eax, fcn.007e7c40
xor ecx, ecx
mov ebx, dword [0xbbd878]
imul eax, eax
and eax, 3
cmp eax, 1
seta cl
mov eax, ecx
xor eax, 0x48429df1
lea ecx, [eax + ecx*2 + 0x410]
mov edx, ecx
xor ebx, ecx
shr edx, 0x1f
mov dword [0xbbd878], ebx
not ebx
or edx, ecx
and cl, 7
imul edx, ebx
xor dword [0xbbd87c], edx
mov dl, 1
shl dl, cl
or byte [0xbbd883], dl
mov eax, fcn.007e7c40
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 1
seta cl
mov eax, ecx
xor eax, 1
lea ecx, [eax + ecx*2]
mov al, 0xfe
xor cl, 7
rol al, cl
and byte [0xbbd883], al
mov ecx, edi
add esi, 9
call fcn.00845740
mov word [edi + 0x2b], 1
mov dword [edi + 0x18], 0
mov dword [edi + 0x14], 0
mov dword [edi + 0x24], 0
mov dword [edi + 0x20], 0
mov word [edi + 0x28], 0
push 0xbbd878
push esi
call fcn.00783700
add esp, 8
test eax, eax
jne 0x843a79
mov dword [edi + 0x10], 1
mov dword [esp + 0xa4], 0
jmp 0x8441f2
mov eax, fcn.0082dd30
mov edx, 3
movzx ebx, byte [0xbbd88f]
sub edx, eax
xor eax, eax
mov ecx, edx
xor ecx, fcn.0082dd30
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2]
or al, 4
movzx eax, al
bt ebx, eax
jb 0x843bec
mov al, byte [0xbbd88f]
mov edi, edx
xor ecx, ecx
mov ah, 1
xor edi, fcn.0082dd30
sete cl
mov ebx, ecx
xor ebx, 1
lea ebx, [ecx + ebx*2]
mov cl, 7
or bl, 4
sub cl, bl
shl ah, cl
or ah, al
lock cmpxchg byte [0xbbd88f], ah
jne 0x843ab4
mov edx, fcn.0082dd30
mov ecx, 3
mov ah, 7
sub ecx, edx
xor edx, edx
mov edi, ecx
xor edi, fcn.0082dd30
sete dl
mov ebx, edx
xor ebx, 1
lea edx, [edx + ebx*2]
or dl, 4
sub ah, dl
movzx edx, ah
movzx eax, al
bt eax, edx
jae 0x843b41
mov edi, dword [ebp + 8]
mov edx, ecx
xor eax, eax
movzx ebx, byte [0xbbd88f]
xor edx, fcn.0082dd30
sete al
mov edx, eax
xor edx, 1
lea eax, [eax + edx*2]
or al, 4
movzx eax, al
bt ebx, eax
jae 0x843b16
jmp 0x843bec
xor eax, eax
xor ecx, fcn.0082dd30
movzx edx, byte [0xbbd88f]
mov edi, dword [ebp + 8]
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2]
or al, 4
movzx eax, al
bt edx, eax
jb 0x843bbd
mov eax, fcn.0082dd30
mov ecx, 3
mov ebx, dword [0xbbd884]
sub ecx, eax
xor eax, eax
xor ecx, fcn.0082dd30
sete al
mov ecx, eax
not ecx
and ecx, 0xa1
lea ecx, [eax + ecx*2 + 0x4c5bc94c]
mov edx, ecx
xor ebx, ecx
shr edx, 0x1f
mov dword [0xbbd884], ebx
not ebx
or edx, ecx
and cl, 7
imul edx, ebx
xor dword [0xbbd888], edx
mov dl, 1
shl dl, cl
or byte [0xbbd88f], dl
mov eax, fcn.0082dd30
mov ecx, 3
mov dl, 0xfe
sub ecx, eax
xor eax, eax
xor ecx, fcn.0082dd30
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2]
mov cl, 7
or al, 4
sub cl, al
rol dl, cl
and byte [0xbbd88f], dl
push 0xbbd884
push esi
call fcn.00783700
add esp, 8
test eax, eax
jne 0x843c1c
mov dword [edi + 0xc], 1
mov dword [edi + 0x10], 1
mov dword [esp + 0xa4], 0
jmp 0x8441f2
mov eax, fcn.007f6c60
mov edx, 3
sub edx, eax
xor eax, eax
mov ecx, edx
xor ecx, fcn.007f6c60
movzx ecx, byte [0xbbd89b]
sete al
bt ecx, eax
jb 0x843d32
mov al, byte [0xbbd89b]
mov ecx, edx
mov ah, 1
xor ecx, fcn.007f6c60
sete cl
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbbd89b], ah
jne 0x843c4a
mov edx, fcn.007f6c60
mov ecx, 3
movzx eax, al
sub ecx, edx
mov edx, ecx
xor edx, fcn.007f6c60
sete dl
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x843cab
mov edx, ecx
xor eax, eax
xor edx, fcn.007f6c60
movzx edx, byte [0xbbd89b]
sete al
bt edx, eax
jae 0x843c8d
jmp 0x843d32
xor eax, eax
xor ecx, fcn.007f6c60
movzx ecx, byte [0xbbd89b]
sete al
bt ecx, eax
jb 0x843d10
mov eax, fcn.007f6c60
mov edx, 3
xor ecx, ecx
sub edx, eax
mov eax, dword [0xbbd890]
xor edx, fcn.007f6c60
sete cl
or ecx, 0xe85be590
add ecx, 0x1010
mov edx, ecx
xor eax, ecx
shr edx, 0x1f
mov dword [0xbbd890], eax
not eax
or edx, ecx
and cl, 7
imul edx, eax
xor dword [0xbbd894], edx
mov dl, 1
shl dl, cl
or byte [0xbbd89b], dl
mov eax, fcn.007f6c60
mov ecx, 3
sub ecx, eax
mov al, 0xfe
xor ecx, fcn.007f6c60
sete cl
xor cl, 7
rol al, cl
and byte [0xbbd89b], al
push 0xbbd890
push esi
call fcn.00783700
add esp, 8
test eax, eax
fldz
fldz
jne case.0x842f71.212
fstp st(1)
fstp st(0)
mov dword [esp + 0xa4], 0
jmp 0x8441f2
mov edi, 1
fstp st(1)
fstp st(0)
movzx eax, byte [esi + edi]
test eax, eax
je 0x843d81
cmp al, 0x3a
je 0x843d81
test byte [eax + 0xb4bd18], 1
jne 0x843d81
inc edi
jmp 0x843d69
lea edx, [esp + 0x98]
mov ecx, esi
push 1
push edi
call fcn.007b0530
add esp, 8
test eax, eax
jg 0x843da9
mov dword [esp + 0xa4], 1
jmp 0x8441f2
add edi, esi
movzx eax, byte [edi]
cmp eax, 0x3a
jne 0x843ec4
movzx eax, byte [esi]
lea ecx, [esi + 1]
lea edx, [esp + 0x68]
mov dword [esp + 0x94], 0
mov dword [esp + 0x90], 0
mov dword [esp + 0x8c], 0
mov dword [esp + 0x88], 0
mov dword [esp + 0x84], 0
mov dword [esp + 0x80], 0
mov dword [esp + 0x7c], 0
mov dword [esp + 0x78], 0
mov dword [esp + 0x74], 0
mov dword [esp + 0x70], 0
mov dword [esp + 0x6c], 0
mov dword [esp + 0x68], 0
add eax, 0xffffffd0
cmp eax, 0xa
cmovb ecx, esi
call fcn.00844600
test eax, eax
fldz
fldz
jne case.0x842f71.212
lea ecx, [esp + 0x68]
fstp st(1)
fstp st(0)
call fcn.00842b20
mov ecx, 0xfd6cd200
mov eax, dword [esp + 0x6c]
add ecx, dword [esp + 0x68]
adc eax, 0xffffffff
push 0
push 0x5265c00
push eax
push ecx
call fcn.0098a120
mov dword [esp + 0x6c], edx
mov dword [esp + 0x68], eax
mov ebx, eax
mov edi, edx
cmp byte [esi], 0x2d
jne 0x843e99
xor eax, eax
neg ebx
sbb eax, edi
mov dword [esp + 0x68], ebx
mov edi, eax
mov dword [esp + 0x6c], eax
mov esi, dword [ebp + 8]
mov ecx, esi
call fcn.00842b20
mov ecx, esi
call fcn.00845720
add dword [esi], ebx
adc dword [esi + 4], edi
mov dword [esp + 0xa4], 0
jmp 0x8441f2
movzx eax, byte [edi + 1]
inc edi
test byte [eax + 0xb4bd18], 1
jne 0x843ebf
mov ecx, edi
call fcn.00783170
lea ecx, [eax - 3]
fldz
fldz
cmp ecx, 7
ja case.0x842f71.212
mov ecx, fcn.0080e580
fstp st(1)
fstp st(0)
mov dword [esp + 0x30], edi
xor edi, edi
mov dword [esp + 0x2c], eax
and ecx, 1
inc ecx
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x38]
xor eax, eax
mov esi, dword [edi*4 + 0xb57900]
mov dword [esp + 0x24], edi
xor ecx, fcn.0080e580
sete al
mov ecx, eax
not ecx
and ecx, 0x491
lea ebx, [eax + ecx*2 - 0x3263bc94]
mov eax, 1
xor ebx, dword [edi*4 + 0xb57940]
mov ecx, ebx
and cl, 7
movzx edx, cl
shl eax, cl
xor cl, 7
mov dword [esp + 0x10], edx
mov edx, 1
shl edx, cl
mov ecx, dword [edi*4 + str._f_f_f_f_f_f]
mov dword [esp + 0x18], ecx
movzx ecx, byte [esi + ecx - 1]
mov edi, dword [esp + 0x10]
bt ecx, edi
mov edi, dword [esp + 0x18]
jb 0x843fff
mov dword [esp + 0x20], eax
mov al, byte [esi + edi - 1]
mov ecx, eax
or cl, dl
lock cmpxchg byte [esi + edi - 1], cl
jne 0x843f77
mov ecx, dword [esp + 0x20]
movzx eax, al
test edx, eax
je 0x843f99
movzx eax, byte [esi + edi - 1]
test ecx, eax
je 0x843f8e
jmp 0x843fff
mov dword [esp + 0x34], edx
movzx eax, byte [esi + edi - 1]
test ecx, eax
jne 0x843ff5
lea ecx, [edi - 4]
mov dword [esp + 0x1c], esi
shr ecx, 2
je 0x843fe9
mov edx, dword [esp + 0x1c]
xor eax, eax
mov dword [esp + 0x3c], ecx
mov esi, dword [edx]
mov ecx, eax
mov dword [esp + 0x10], ebx
inc eax
shl dword [esp + 0x10], cl
and cl, 0x1f
xor cl, 0x1f
xor esi, ebx
shr ebx, cl
mov ecx, dword [esp + 0x3c]
or ebx, dword [esp + 0x10]
mov dword [edx], esi
not esi
add edx, 4
imul ebx, esi
cmp eax, ecx
jne 0x843fbc
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x1c]
or byte [esi + edi - 1], al
mov eax, dword [esp + 0x34]
not al
and byte [esi + edi - 1], al
mov edi, dword [esp + 0x24]
inc edi
cmp edi, 6
jne 0x843eff
mov ecx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x30]
mov edi, dword [ebp + 8]
mov al, byte [ebx + ecx - 1]
lea esi, [ecx - 1]
or al, 0x20
cmp al, 0x73
cmovne esi, ecx
mov ecx, edi
call fcn.00842b20
mov dword [esp + 0xa4], 1
xor eax, eax
fld qword [esp + 0x98]
fldz
fucompi st(1)
seta al
add esi, 0xfffffffd
fld qword [eax*8 + 0xb4ba20]
cmp esi, 3
fstp qword [esp + 0x24]
ja case.default.0x844063
fstp qword [esp + 0x10]
jmp dword [esi*4 + 0xb5a1c0]
push 6
push ebx
push 0xbbd8bc
call fcn.00783750
fld qword [esp + 0x1c]
add esp, 0xc
test eax, eax
jne 0x844219
fld qword [0xb4ba70]
fxch st(1)
fucomi st(1)
fstp st(1)
jbe 0x844219
fld qword [0xb4ba78]
xor eax, eax
fucompi st(1)
jbe 0x844219
lea esi, [eax + eax*2]
mov al, byte [esi*8 + 0xb50bf0]
cmp al, 2
je 0x844142
cmp al, 1
fstp st(0)
jne 0x844196
mov ecx, edi
call fcn.00845730
fnstcw word [esp + 0xa]
mov edx, 0xffffffff
movzx eax, word [esp + 0xa]
mov word [esp + 0xa], 0xc7f
fldcw word [esp + 0xa]
mov word [esp + 0xa], ax
mov eax, dword [ebp + 8]
fld qword [esp + 0x10]
fist dword [esp + 0x48]
fldcw word [esp + 0xa]
mov ecx, dword [esp + 0x48]
mov edi, dword [eax + 0xc]
mov eax, 0xfffffff4
add edi, ecx
test edi, edi
cmovg eax, edx
mov edx, 0x2aaaaaab
add eax, edi
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
mov eax, dword [ebp + 8]
add dword [eax + 8], edx
shl edx, 2
lea eax, [edx + edx*2]
mov edx, dword [ebp + 8]
sub edi, eax
mov dword [edx + 0xc], edi
mov edi, dword [ebp + 8]
mov byte [edi + 0x28], 0
mov dword [esp + 0x4c], ecx
fisub dword [esp + 0x4c]
jmp 0x84418b
fnstcw word [esp + 8]
mov ecx, dword [ebp + 8]
movzx eax, word [esp + 8]
mov word [esp + 8], 0xc7f
fldcw word [esp + 8]
mov word [esp + 8], ax
fistp dword [esp + 0x50]
fldcw word [esp + 8]
mov edi, dword [esp + 0x50]
call fcn.00845730
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 8]
add dword [eax + 8], edi
mov byte [ecx + 0x28], 0
mov dword [esp + 0x54], edi
mov edi, dword [ebp + 8]
fld qword [esp + 0x10]
fisub dword [esp + 0x54]
fst qword [esp + 0x10]
fstp qword [esp + 0x98]
mov ecx, edi
call fcn.00842b20
fld qword [esp + 0x10]
fmul qword [esi*8 + 0xb50c00]
fld qword [esp + 0x24]
faddp st(1)
fnstcw word [esp + 6]
movzx eax, word [esp + 6]
mov word [esp + 6], 0xc7f
fldcw word [esp + 6]
mov word [esp + 6], ax
fistp qword [esp + 0x60]
fldcw word [esp + 6]
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x64]
add dword [edi], eax
adc dword [edi + 4], ecx
mov dword [esp + 0xa4], 0
fldz
fstp st(0)
mov ecx, edi
call fcn.00845720
fldz
fldz
fstp st(1)
fstp st(0)
mov esi, dword [esp + 0xa4]
mov ecx, dword [esp + 0xa8]
xor ecx, ebp
call fcn.00989fe9
mov eax, esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
fstp st(0)
push 6
push ebx
push 0xbbd8c8
call fcn.00783750
fld qword [esp + 0x1c]
add esp, 0xc
test eax, eax
jne case.default.0x844063
fld qword [0xb4ba80]
fxch st(1)
fucomi st(1)
fstp st(1)
jbe case.default.0x844063
fld qword [0xb4ba88]
mov eax, 1
fucompi st(1)
ja 0x8440a8
jmp case.default.0x844063
push 4
push ebx
push 0xbbd8d4
call fcn.00783750
fld qword [esp + 0x1c]
add esp, 0xc
test eax, eax
jne 0x84428f
fld qword [0xb4ba58]
fxch st(1)
fucomi st(1)
fstp st(1)
jbe 0x84428f
fld qword [0xb4ba60]
mov eax, 2
fucompi st(1)
ja 0x8440a8
fstp st(0)
push 4
push ebx
push 0xbbd8f8
call fcn.00783750
fld qword [esp + 0x1c]
add esp, 0xc
test eax, eax
jne case.default.0x844063
fld dword [0xb4ba68]
fxch st(1)
fucomi st(1)
fstp st(1)
jbe case.default.0x844063
fld dword [0xb4ba6c]
mov eax, 5
jmp 0x84424c
push 3
push ebx
push 0xbbd8e0
call fcn.00783750
fld qword [esp + 0x1c]
add esp, 0xc
test eax, eax
jne case.default.0x844063
fld dword [0xb4ba50]
fxch st(1)
fucomi st(1)
fstp st(1)
jbe case.default.0x844063
fld dword [0xb4ba54]
mov eax, 3
jmp 0x84424c
push 5
push ebx
push 0xbbd8ec
call fcn.00783750
fld qword [esp + 0x1c]
add esp, 0xc
test eax, eax
jne case.default.0x844063
fld dword [0xb4ba48]
fxch st(1)
fucomi st(1)
fstp st(1)
jbe case.default.0x844063
fld dword [0xb4ba4c]
mov eax, 4
jmp 0x84424c