Function at 0x413530
Capabilities:
Encode data using xor
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4c795e
mov eax, dword fs:[0]
push eax
sub esp, 0x2f0
mov eax, dword [0x524ee0]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov eax, dword [ebp + 8]
mov dword [ebp - 0x270], eax
mov eax, dword [ebp + 0xc]
push 0
lea ecx, [ebp - 0x2c8]
mov dword [ebp - 0x2a8], eax
mov dword [ebp - 0x28c], 0
call fcn.00444480
mov eax, dword [0x524ab0]
mov ecx, 0x524ab0
mov dword [ebp - 4], 0
call dword [eax + 0xc]
lea edi, [eax + 0x10]
mov dword [ebp - 0x294], edi
mov eax, dword [0x524ab0]
mov ecx, 0x524ab0
mov byte [ebp - 4], 1
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x288], esi
mov eax, dword [0x524ab0]
mov ecx, 0x524ab0
mov byte [ebp - 4], 2
call dword [eax + 0xc]
lea ebx, [eax + 0x10]
mov dword [ebp - 0x290], ebx
mov ecx, dword [ebp - 0x270]
push str.hive
mov byte [ebp - 4], 4
call fcn.00444a00
sub esp, 0x18
mov ecx, eax
push esp
call fcn.004451d0
lea eax, [ebp - 0x278]
push eax
call fcn.004512c0
add esp, 0x1c
mov edx, dword [eax]
lea ecx, [edi - 0x10]
lea eax, [edx - 0x10]
mov byte [ebp - 4], 5
mov dword [ebp - 0x284], eax
mov dword [ebp - 0x298], ecx
cmp eax, ecx
je 0x413688
cmp dword [ecx + 0xc], 0
lea edi, [ecx + 0xc]
jl 0x413673
mov eax, dword [eax]
cmp eax, dword [ecx]
jne 0x413673
push dword [ebp - 0x284]
call fcn.004047d0
add esp, 4
mov dword [ebp - 0x284], eax
or ecx, 0xffffffff
lock xadd dword [edi], ecx
dec ecx
test ecx, ecx
jg 0x413668
mov edx, dword [ebp - 0x298]
push edx
mov ecx, dword [edx]
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x284]
lea edi, [eax + 0x10]
mov dword [ebp - 0x294], edi
jmp 0x413688
push dword [edx - 0xc]
lea ecx, [ebp - 0x294]
push edx
call fcn.00409670
mov edi, dword [ebp - 0x294]
mov edx, dword [ebp - 0x278]
add edx, 0xfffffff0
mov byte [ebp - 4], 4
lea eax, [edx + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4136ac
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea eax, [edi - 0x10]
push ecx
mov ecx, dword [eax]
mov dword [ebp - 0x284], eax
mov eax, dword [ecx]
mov dword [ebp - 0x298], esp
call dword [eax + 0x10]
lea ecx, [edi - 0x10]
mov edx, eax
cmp dword [ecx + 0xc], 0
lea eax, [ecx + 0xc]
mov dword [ebp - 0x278], eax
jl 0x4136ec
cmp edx, dword [ecx]
jne 0x4136ec
mov edx, dword [ebp - 0x278]
mov eax, 1
lock xadd dword [edx], eax
jmp 0x413734
mov eax, dword [edx]
push 2
push dword [ecx + 4]
mov ecx, edx
call dword [eax]
mov edx, eax
mov dword [ebp - 0x278], edx
test edx, edx
jne 0x413708
call fcn.00409970
mov eax, dword [edi - 0xc]
mov dword [edx + 4], eax
mov ecx, dword [edi - 0xc]
lea eax, [ecx*2 + 2]
push eax
lea eax, [ecx*2 + 2]
push edi
push eax
lea eax, [edx + 0x10]
push eax
call fcn.004a98f5
mov ecx, dword [ebp - 0x278]
add esp, 0x10
lea eax, [ecx + 0x10]
mov ecx, dword [ebp - 0x298]
mov dword [ecx], eax
call fcn.00416540
add esp, 4
mov dword [ebp - 0x27c], eax
test eax, eax
jne 0x41386c
lea eax, [ebp - 0x294]
push eax
lea eax, [ebp - 0x270]
push str.enumRegValues_hive_error_
push eax
call fcn.0040b7a0
add esp, 0xc
lea eax, [ebp - 0x270]
push eax
lea eax, [ebp - 0x234]
push eax
mov byte [ebp - 4], 6
call fcn.00451390
add esp, 8
push eax
lea ecx, [ebp - 0x2b8]
mov byte [ebp - 4], 7
call fcn.004443a0
push 0x4dfc64
lea ecx, [ebp - 0x2c8]
mov byte [ebp - 4], 8
call fcn.00444920
lea ecx, [ebp - 0x2b8]
push ecx
mov ecx, eax
call fcn.00444730
lea ecx, [ebp - 0x2b8]
mov byte [ebp - 4], 7
call fcn.00444690
cmp dword [ebp - 0x220], 0x10
jb 0x4137e2
push dword [ebp - 0x234]
call fcn.004a831e
add esp, 4
mov edx, dword [ebp - 0x270]
add edx, 0xfffffff0
mov byte [ebp - 4], 4
lea eax, [edx + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x413806
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea edx, [ebx - 0x10]
or ebx, 0xffffffff
mov byte [ebp - 4], 2
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x413826
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 0xfffffff0
mov byte [ebp - 4], 1
lea eax, [esi + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x413843
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x284]
mov byte [ebp - 4], 0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x413863
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0
jmp 0x414054
mov ecx, dword [ebp - 0x270]
push 0x4e0098
call fcn.00444a00
sub esp, 0x18
mov ecx, eax
push esp
call fcn.004451d0
lea eax, [ebp - 0x2a0]
push eax
call fcn.004512c0
add esp, 0x1c
mov edx, dword [eax]
lea ecx, [esi - 0x10]
lea eax, [edx - 0x10]
mov byte [ebp - 4], 9
mov dword [ebp - 0x278], eax
mov dword [ebp - 0x298], ecx
cmp eax, ecx
je 0x413915
cmp dword [ecx + 0xc], 0
lea esi, [ecx + 0xc]
jl 0x413900
mov eax, dword [eax]
cmp eax, dword [ecx]
jne 0x413900
push dword [ebp - 0x278]
call fcn.004047d0
add esp, 4
mov dword [ebp - 0x278], eax
or ecx, 0xffffffff
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x4138f5
mov edx, dword [ebp - 0x298]
push edx
mov ecx, dword [edx]
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x278]
lea esi, [eax + 0x10]
mov dword [ebp - 0x288], esi
jmp 0x413915
push dword [edx - 0xc]
lea ecx, [ebp - 0x288]
push edx
call fcn.00409670
mov esi, dword [ebp - 0x288]
mov edx, dword [ebp - 0x2a0]
add edx, 0xfffffff0
mov byte [ebp - 4], 4
lea eax, [edx + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x413939
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0x270]
push 0x4e00a4
call fcn.00445a20
test al, al
je 0x413966
mov ecx, dword [ebp - 0x270]
push 0x4e00a4
call fcn.00444a00
mov ecx, eax
call fcn.004450d0
jmp 0x413968
xor eax, eax
mov ecx, 0x20019
cmp eax, 0x20
jne 0x413979
mov ecx, 0x20219
jmp 0x413984
mov edx, 0x20119
cmp eax, 0x40
cmove ecx, edx
lea eax, [ebp - 0x28c]
push eax
push ecx
push 0
push esi
push dword [ebp - 0x27c]
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
je 0x413aed
push eax
lea eax, [ebp - 0x27c]
push eax
call fcn.0043fd80
add esp, 8
push eax
lea eax, [ebp - 0x270]
push str.enumRegValues_RegOpenKeyEx_
push eax
mov byte [ebp - 4], 0xa
call fcn.0040b7a0
add esp, 0xc
mov edx, dword [ebp - 0x27c]
add edx, 0xfffffff0
or edi, 0xffffffff
mov byte [ebp - 4], 0xc
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4139f2
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea eax, [ebp - 0x270]
push eax
lea eax, [ebp - 0x234]
push eax
call fcn.00451390
add esp, 8
push eax
lea ecx, [ebp - 0x2b8]
mov byte [ebp - 4], 0xd
call fcn.004443a0
push 0x4dfc64
lea ecx, [ebp - 0x2c8]
mov byte [ebp - 4], 0xe
call fcn.00444920
lea ecx, [ebp - 0x2b8]
push ecx
mov ecx, eax
call fcn.00444730
lea ecx, [ebp - 0x2b8]
mov byte [ebp - 4], 0xd
call fcn.00444690
cmp dword [ebp - 0x220], 0x10
jb 0x413a60
push dword [ebp - 0x234]
call fcn.004a831e
add esp, 4
mov edx, dword [ebp - 0x270]
add edx, 0xfffffff0
mov byte [ebp - 4], 4
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x413a83
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea edx, [ebx - 0x10]
or ebx, 0xffffffff
mov byte [ebp - 4], 2
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x413aa3
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 0xfffffff0
mov byte [ebp - 4], 1
lea eax, [esi + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x413ac0
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x284]
mov byte [ebp - 4], 0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x413863
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0
jmp 0x414054
xor eax, eax
push 0x206
push eax
mov word [ebp - 0x21c], ax
lea eax, [ebp - 0x21a]
push eax
call fcn.004a9c90
add esp, 0xc
lea eax, [ebp - 0x2fc]
push eax
lea eax, [ebp - 0x2d8]
push eax
lea eax, [ebp - 0x2e0]
push eax
lea eax, [ebp - 0x2a4]
push eax
lea eax, [ebp - 0x2dc]
push eax
lea eax, [ebp - 0x2e4]
push eax
lea eax, [ebp - 0x2d0]
push eax
lea eax, [ebp - 0x2d4]
push eax
push 0
lea eax, [ebp - 0x2cc]
push eax
lea eax, [ebp - 0x21c]
push eax
push dword [ebp - 0x28c]
mov dword [ebp - 0x2cc], 0x104
mov dword [ebp - 0x2d4], 0
mov dword [ebp - 0x280], 0x3fff
call dword [sym.imp.ADVAPI32.dll_RegQueryInfoKeyW]
test eax, eax
jne 0x413b8e
mov eax, dword [ebp - 0x2a4]
inc eax
mov dword [ebp - 0x280], eax
mov eax, dword [0x524ab0]
mov ecx, 0x524ab0
mov dword [ebp - 0x270], 0
mov dword [ebp - 0x29c], 0
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x274], eax
mov ecx, dword [ebp - 0x280]
mov byte [ebp - 4], 0xf
mov dword [ebp - 0x2a0], ecx
test ecx, ecx
jns 0x413bd6
push 0x80070057
call fcn.00404410
mov ecx, dword [eax - 8]
sub ecx, dword [ebp - 0x280]
mov edx, 1
sub edx, dword [eax - 4]
or ecx, edx
jge 0x413c02
push dword [ebp - 0x280]
lea ecx, [ebp - 0x274]
call fcn.004085d0
mov eax, dword [ebp - 0x274]
push 0
push 0
lea ecx, [ebp - 0x29c]
push ecx
push 0
lea ecx, [ebp - 0x280]
push ecx
push eax
push dword [ebp - 0x270]
push dword [ebp - 0x28c]
call dword [sym.imp.ADVAPI32.dll_RegEnumValueW]
mov dword [ebp - 0x27c], eax
cmp eax, 0x103
je 0x413ec4
mov ecx, dword [ebp - 0x274]
push dword [ecx - 8]
push ecx
call fcn.004a9e6a
mov edx, eax
add esp, 8
test edx, edx
js 0x413bcc
mov ecx, dword [ebp - 0x274]
cmp edx, dword [ecx - 8]
jg 0x413bcc
mov dword [ecx - 0xc], edx
mov eax, dword [ebp - 0x274]
xor ecx, ecx
mov word [eax + edx*2], cx
cmp dword [ebp - 0x27c], ecx
jne 0x413d65
push ecx
lea ecx, [ebp - 0x2b8]
call fcn.00444480
lea eax, [ebp - 0x274]
push eax
lea eax, [ebp - 0x24c]
push eax
mov byte [ebp - 4], 0x10
call fcn.00451390
add esp, 8
push eax
lea ecx, [ebp - 0x2f4]
mov byte [ebp - 4], 0x11
call fcn.004443a0
push 0x4e009c
lea ecx, [ebp - 0x2b8]
mov byte [ebp - 4], 0x12
call fcn.00444920
lea ecx, [ebp - 0x2f4]
push ecx
mov ecx, eax
call fcn.00444730
lea ecx, [ebp - 0x2f4]
mov byte [ebp - 4], 0x11
call fcn.00444690
cmp dword [ebp - 0x238], 0x10
mov byte [ebp - 4], 0x10
jb 0x413d02
push dword [ebp - 0x24c]
call fcn.004a831e
add esp, 4
push dword [ebp - 0x29c]
lea ecx, [ebp - 0x22c]
call fcn.004443e0
push str.type
lea ecx, [ebp - 0x2b8]
mov byte [ebp - 4], 0x13
call fcn.00444920
lea ecx, [ebp - 0x22c]
push ecx
mov ecx, eax
call fcn.00444730
lea ecx, [ebp - 0x22c]
mov byte [ebp - 4], 0x10
call fcn.00444690
lea eax, [ebp - 0x2b8]
push eax
lea ecx, [ebp - 0x2c8]
call fcn.00444f60
lea ecx, [ebp - 0x2b8]
mov byte [ebp - 4], 0xf
call fcn.00444690
mov ecx, dword [0x526340]
mov eax, ecx
imul eax, ecx
imul eax, ecx
cdq
mov ecx, 0xe
idiv ecx
inc dword [ebp - 0x270]
cmp edx, 2
jne 0x413e28
mov edx, dword [0x526340]
xor eax, eax
mov dword [ebp - 0x284], eax
mov ecx, eax
and ecx, 1
sar eax, 1
dec ecx
not ecx
and ecx, edx
xor ecx, eax
mov eax, ecx
and eax, 1
dec eax
not eax
and eax, edx
sar ecx, 1
xor eax, ecx
mov ecx, eax
and ecx, 1
sar eax, 1
dec ecx
not ecx
and ecx, edx
xor ecx, eax
mov eax, ecx
and eax, 1
dec eax
not eax
and eax, edx
sar ecx, 1
xor eax, ecx
mov ecx, eax
and ecx, 1
sar eax, 1
dec ecx
not ecx
and ecx, edx
xor ecx, eax
mov eax, ecx
and eax, 1
dec eax
not eax
and eax, edx
sar ecx, 1
xor eax, ecx
mov ecx, eax
and ecx, 1
sar eax, 1
dec ecx
not ecx
and ecx, edx
xor ecx, eax
mov eax, ecx
and eax, 1
dec eax
not eax
and eax, edx
sar ecx, 1
xor eax, ecx
add edx, eax
mov eax, dword [ebp - 0x284]
inc eax
mov dword [0x526340], edx
mov dword [ebp - 0x284], eax
cmp eax, 0x100
jl 0x413d98
mov eax, dword [ebp - 0x274]
mov ecx, dword [ebp - 0x2a0]
lea edx, [eax - 0x10]
mov dword [ebp - 0x280], ecx
cmp dword [edx + 4], 0
mov ecx, dword [edx]
mov dword [ebp - 0x27c], ecx
mov ecx, dword [ebp - 0x280]
je 0x413bc8
cmp dword [edx + 0xc], 0
lea ecx, [edx + 0xc]
jge 0x413e91
cmp dword [eax - 8], 0
jge 0x413e6e
push 0x80070057
call fcn.00404410
mov dword [eax - 0xc], 0
mov eax, dword [ebp - 0x274]
xor ecx, ecx
mov word [eax], cx
mov eax, dword [ebp - 0x274]
mov ecx, dword [ebp - 0x280]
jmp 0x413bc8
or eax, 0xffffffff
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x413ea5
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0x27c]
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ecx, dword [ebp - 0x280]
add eax, 0x10
mov dword [ebp - 0x274], eax
jmp 0x413bc8
lea ecx, [ebp - 0x2c8]
call fcn.00445410
test al, al
je 0x413f14
push str.empty
lea ecx, [ebp - 0x22c]
call fcn.00444440
push 0x4dfc64
lea ecx, [ebp - 0x2c8]
mov byte [ebp - 4], 0x14
call fcn.00444920
lea ecx, [ebp - 0x22c]
push ecx
mov ecx, eax
call fcn.00444730
lea ecx, [ebp - 0x22c]
mov byte [ebp - 4], 0xf
call fcn.00444690
mov edx, dword [ebp - 0x274]
add edx, 0xfffffff0
mov byte [ebp - 4], 4
lea eax, [edx + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x413f38
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea edx, [ebx - 0x10]
or ebx, 0xffffffff
mov dword [ebp - 4], 2
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x413f5b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 0xfffffff0
mov byte [ebp - 4], 1
lea eax, [esi + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x413f78
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
add edi, 0xfffffff0
mov byte [ebp - 4], 0
lea eax, [edi + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x414054
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x414054
mov esi, dword [0x526340]
mov eax, esi
imul eax, esi
imul eax, esi
cdq
mov ecx, 0x18
idiv ecx
cmp edx, 2
jne 0x4140a7
mov eax, 0x51eb851f
imul esi
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
imul ecx, ecx, 0x64
sub esi, ecx
xor ecx, ecx
lea eax, [esi + 0x7b]
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004a7aa0
push eax
call fcn.004a98f0
add esp, 8
mov eax, dword [ebp - 0x28c]
test eax, eax
je 0x4140c2
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 0x28c], 0
lea ecx, [ebp - 0x26c]
call fcn.004465d0
mov eax, dword [0x524ab0]
mov ecx, 0x524ab0
mov byte [ebp - 4], 0x19
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x288], esi
lea eax, [ebp - 0x2c8]
push eax
lea eax, [ebp - 0x24c]
push eax
lea ecx, [ebp - 0x26c]
mov byte [ebp - 4], 0x1a
call fcn.00449500
mov edx, eax
cmp dword [edx + 0x14], 0x10
mov byte [ebp - 4], 0x1b
jb 0x414112
mov edx, dword [edx]
sub esp, 0x18
mov edi, esp
mov dword [edi + 0x14], 0xf
mov dword [edi + 0x10], 0
mov byte [edi], 0
cmp byte [edx], 0
jne 0x414131
xor ecx, ecx
jmp 0x41414d
mov ecx, edx
lea eax, [ecx + 1]
mov dword [ebp - 0x290], eax
lea esp, [esp]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x414140
sub ecx, dword [ebp - 0x290]
push ecx
push edx
mov ecx, edi
call fcn.00401460
lea eax, [ebp - 0x2a4]
push eax
call fcn.004512c0
add esp, 0x1c
mov ecx, dword [eax]
lea edi, [esi - 0x10]
lea edx, [ecx - 0x10]
mov byte [ebp - 4], 0x1c
cmp edx, edi
je 0x4141cc
cmp dword [edi + 0xc], 0
lea esi, [edi + 0xc]
jl 0x4141b7
mov eax, dword [edx]
cmp eax, dword [edi]
jne 0x4141b7
push edx
call fcn.004047d0
add esp, 4
mov dword [ebp - 0x290], eax
mov ecx, ebx
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x4141ac
mov ecx, dword [edi]
push edi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x290]
lea esi, [eax + 0x10]
mov dword [ebp - 0x288], esi
jmp 0x4141cc
push dword [ecx - 0xc]
push ecx
lea ecx, [ebp - 0x288]
call fcn.00409670
mov esi, dword [ebp - 0x288]
mov edx, dword [ebp - 0x2a4]
add edx, 0xfffffff0
mov byte [ebp - 4], 0x1b
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4141ef
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [ebp - 0x238], 0x10
mov byte [ebp - 4], 0x1a
jb 0x41420a
push dword [ebp - 0x24c]
call fcn.004a831e
add esp, 4
mov edi, dword [ebp - 0x2a8]
mov eax, 8
mov word [edi], ax
push dword [esi - 0xc]
push esi
call dword [sym.imp.OLEAUT32.dll_SysReAllocStringLen]
test eax, eax
jne 0x41422b
call fcn.00409970
mov dword [edi + 8], eax
mov ecx, dword [0x526340]
lea eax, [ecx + 1]
imul eax, ecx
cdq
mov ecx, 0x18
idiv ecx
cmp edx, 0xd
jne 0x414269
mov eax, 0xef
mov edi, 0xe2
test edi, edi
je 0x414262
cdq
idiv edi
mov ecx, edi
mov eax, ecx
mov edi, edx
test ecx, ecx
jne 0x414251
add eax, edi
mov dword [0x526340], eax
add esi, 0xfffffff0
mov byte [ebp - 4], 0x19
lea eax, [esi + 0xc]
lock xadd dword [eax], ebx
dec ebx
test ebx, ebx
jg 0x414284
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [ebp - 0x254], 0x10
mov byte [ebp - 4], 0
mov dword [ebp - 0x26c], 0x4dfc5c
jb 0x4142a9
push dword [ebp - 0x268]
call fcn.004a831e
add esp, 4
lea ecx, [ebp - 0x26c]
mov dword [ebp - 0x254], 0xf
mov dword [ebp - 0x258], 0
mov byte [ebp - 0x268], 0
call fcn.004466d0
lea ecx, [ebp - 0x2c8]
mov dword [ebp - 4], 0xffffffff
call fcn.00444690
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.004a8b24
mov esp, ebp
pop ebp
ret