Function at 0x4038d0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x4513fe
mov eax, dword fs:[0]
push eax
sub esp, 0x68
push ebx
push esi
push edi
mov eax, dword [0x46e230]
xor eax, esp
push eax
lea eax, [esp + 0x78]
mov dword fs:[0], eax
mov edi, ecx
mov dword [esp + 0x18], edi
xor ebx, ebx
lea ecx, [esp + 0x3c]
mov dword [esp + 0x14], ebx
call fcn.00401010
push ecx
mov ecx, dword [ebp + 8]
mov dword [esp + 0x84], ebx
mov eax, esp
mov dword [eax], ecx
lea ecx, [esp + 0x40]
mov dword [esp + 0x30], esp
call fcn.0041ce50
test al, al
jne 0x40395c
lea ecx, [esp + 0x3c]
mov dword [esp + 0x80], 0xffffffff
call fcn.0041bb30
xor al, al
mov ecx, dword [esp + 0x78]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
push ecx
mov eax, esp
lea ecx, [esp + 0x40]
mov dword [esp + 0x30], esp
mov dword [eax], 0x4630d8
call fcn.0041d1e0
push ecx
mov eax, esp
lea edx, [esp + 0x2c]
mov dword [esp + 0x30], esp
push edx
lea ecx, [esp + 0x44]
mov dword [eax], 0x4630e8
call fcn.004010b0
push eax
mov ecx, edi
mov byte [esp + 0x84], 1
call fcn.004023e0
mov byte [esp + 0x80], 0
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4039c5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push ecx
mov eax, esp
lea ecx, [esp + 0x28]
mov dword [esp + 0x30], esp
push ecx
lea ecx, [esp + 0x44]
mov dword [eax], 0x463278
call fcn.004010b0
lea ecx, [esp + 0x24]
mov byte [esp + 0x80], 2
call fcn.00404710
mov eax, dword [esp + 0x24]
mov ecx, str.true
lea ebx, [ebx]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x403a26
cmp dx, bx
je 0x403a22
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x403a26
add eax, 4
add ecx, 4
cmp dx, bx
jne 0x403a00
xor eax, eax
jmp 0x403a2b
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
sete al
movzx edx, al
push ecx
mov eax, esp
mov dword [edi + 4], edx
mov dword [eax], str.setup
lea eax, [esp + 0x24]
mov dword [esp + 0x30], esp
push eax
lea ecx, [esp + 0x44]
call fcn.004010b0
lea ecx, [esp + 0x20]
mov byte [esp + 0x80], 3
call fcn.00404710
mov eax, dword [esp + 0x20]
mov ecx, str.true
jmp 0x403a70
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x403a96
cmp dx, bx
je 0x403a92
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x403a96
add eax, 4
add ecx, 4
cmp dx, bx
jne 0x403a70
xor eax, eax
jmp 0x403a9b
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
sete al
movzx ecx, al
push ecx
mov dword [edi + 8], ecx
mov eax, esp
lea edx, [esp + 0x20]
mov dword [esp + 0x30], esp
push edx
lea ecx, [esp + 0x44]
mov dword [eax], str.showDownloadTips
call fcn.004010b0
lea ecx, [esp + 0x1c]
mov esi, 4
mov byte [esp + 0x80], 4
call fcn.00404710
mov eax, dword [esp + 0x1c]
mov ecx, str.true
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x403b04
cmp dx, bx
je 0x403b00
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x403b04
add eax, esi
add ecx, esi
cmp dx, bx
jne 0x403ae0
xor eax, eax
jmp 0x403b09
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
sete al
movzx eax, al
lea ecx, [esp + 0x3c]
mov dword [edi + 0x14], eax
call fcn.0041ea80
push ecx
mov dword [esp + 0x30], esp
mov eax, esp
lea ecx, [esp + 0x40]
cmp dword [edi + 8], ebx
je 0x403e8f
mov dword [eax], str.setup
call fcn.0041d1e0
push ecx
mov eax, esp
mov dword [esp + 0x30], esp
lea ecx, [esp + 0x40]
mov dword [eax], 0x4632c4
call fcn.0041d270
test al, al
je 0x403b73
lea ecx, [esp + 0x2c]
push ecx
lea ecx, [esp + 0x40]
call fcn.00403630
mov byte [esp + 0x80], 5
mov ebx, 1
jmp 0x403b91
push 0x463324
lea ecx, [esp + 0x2c]
call fcn.00404660
mov dword [esp + 0x80], 6
mov ebx, 2
lea ecx, [edi + 0xc]
push eax
mov dword [esp + 0x18], ebx
call fcn.004023e0
mov dword [esp + 0x80], 5
test bl, 2
je 0x403bd5
mov eax, dword [esp + 0x28]
and ebx, 0xfffffffd
add eax, 0xfffffff0
mov dword [esp + 0x14], ebx
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x403bd5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x80], esi
test bl, 1
je 0x403c08
mov eax, dword [esp + 0x2c]
and ebx, 0xfffffffe
add eax, 0xfffffff0
mov dword [esp + 0x14], ebx
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403c08
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push ecx
mov eax, esp
mov dword [esp + 0x30], esp
lea ecx, [esp + 0x40]
mov dword [eax], 0x463128
call fcn.0041d270
test al, al
je 0x403c3c
lea ecx, [esp + 0x28]
push ecx
lea ecx, [esp + 0x40]
call fcn.00403630
mov byte [esp + 0x80], 7
or ebx, esi
jmp 0x403c58
push 0x463324
lea ecx, [esp + 0x30]
call fcn.00404660
mov dword [esp + 0x80], 8
or ebx, 8
lea ecx, [edi + 0x10]
push eax
mov dword [esp + 0x18], ebx
call fcn.004023e0
mov dword [esp + 0x80], 7
test bl, 8
je 0x403c9c
mov eax, dword [esp + 0x2c]
and ebx, 0xfffffff7
add eax, 0xfffffff0
mov dword [esp + 0x14], ebx
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x403c9c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x80], esi
test bl, 4
je 0x403ccf
mov eax, dword [esp + 0x28]
and ebx, 0xfffffffb
add eax, 0xfffffff0
mov dword [esp + 0x14], ebx
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403ccf
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push ecx
mov eax, esp
mov dword [esp + 0x30], esp
lea ecx, [esp + 0x40]
mov dword [eax], str.updatehead
call fcn.0041d270
test al, al
je 0x403d04
lea ecx, [esp + 0x28]
push ecx
lea ecx, [esp + 0x40]
call fcn.00403630
mov byte [esp + 0x80], 9
or ebx, 0x10
jmp 0x403d20
push 0x463324
lea ecx, [esp + 0x30]
call fcn.00404660
mov dword [esp + 0x80], 0xa
or ebx, 0x20
lea ecx, [edi + 0x30]
push eax
mov dword [esp + 0x18], ebx
call fcn.004023e0
mov dword [esp + 0x80], 9
test bl, 0x20
je 0x403d64
mov eax, dword [esp + 0x2c]
and ebx, 0xffffffdf
add eax, 0xfffffff0
mov dword [esp + 0x14], ebx
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x403d64
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x80], esi
test bl, 0x10
je 0x403d90
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403d90
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push ecx
mov eax, esp
lea ecx, [esp + 0x40]
mov dword [esp + 0x30], esp
mov dword [eax], str.details
call fcn.0041d270
test al, al
je 0x40409f
lea ecx, [esp + 0x3c]
call fcn.0041ea80
mov bl, 0xb
lea esp, [esp]
push ecx
mov eax, esp
lea ecx, [esp + 0x40]
mov dword [esp + 0x2c], esp
mov dword [eax], str.update
call fcn.0041d270
test al, al
je 0x403e81
mov edx, dword [0x46ea80]
mov eax, dword [edx + 0xc]
mov ecx, 0x46ea80
call eax
add eax, 0x10
mov dword [esp + 0x14], eax
lea ecx, [esp + 0x2c]
push ecx
lea ecx, [esp + 0x40]
mov byte [esp + 0x84], bl
call fcn.00403630
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x84], 0xc
call fcn.004023e0
mov byte [esp + 0x80], bl
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x403e43
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x14]
push ecx
lea ecx, [edi + 0x18]
call fcn.00404880
mov byte [esp + 0x80], 4
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x403dc0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x403dc0
lea ecx, [esp + 0x3c]
call fcn.0041eac0
jmp 0x40409f
mov dword [eax], str.components
call fcn.0041d1e0
test al, al
je 0x40409f
lea ecx, [esp + 0x3c]
call fcn.0041ea80
mov edi, dword [esp + 0x18]
push ecx
mov eax, esp
lea ecx, [esp + 0x40]
mov dword [esp + 0x34], esp
mov dword [eax], str.component
call fcn.0041d1e0
test al, al
je 0x404092
xor eax, eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x34], eax
mov bl, 0xd
push 0xc
mov byte [esp + 0x84], bl
call fcn.0044bc94
mov esi, eax
add esp, 4
test esi, esi
je 0x403f33
mov edx, dword [0x46ea80]
mov eax, dword [edx + 0xc]
mov ecx, 0x46ea80
call eax
add eax, 0x10
mov dword [esi], eax
mov edx, dword [0x46ea80]
mov eax, dword [edx + 0xc]
mov ecx, 0x46ea80
call eax
add eax, 0x10
mov dword [esi + 4], eax
mov edx, dword [0x46ea80]
mov eax, dword [edx + 0xc]
mov ecx, 0x46ea80
call eax
add eax, 0x10
mov dword [esi + 8], eax
jmp 0x403f35
xor esi, esi
push esi
lea ecx, [esp + 0x38]
push ecx
call fcn.00402bf0
push ecx
mov eax, esp
lea edx, [esp + 0x30]
mov dword [esp + 0x34], esp
push edx
lea ecx, [esp + 0x44]
mov dword [eax], str.name
call fcn.004010b0
mov byte [esp + 0x80], 0xe
mov esi, dword [esp + 0x34]
push eax
mov ecx, esi
call fcn.004023e0
mov byte [esp + 0x80], bl
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403f96
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push ecx
mov eax, esp
lea ecx, [esp + 0x2c]
mov dword [esp + 0x34], esp
push ecx
lea ecx, [esp + 0x44]
mov dword [eax], 0x463128
call fcn.004010b0
lea ecx, [esi + 4]
push eax
mov byte [esp + 0x84], 0xf
call fcn.004023e0
mov byte [esp + 0x80], bl
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x403fe9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push ecx
mov eax, esp
lea ecx, [esp + 0x18]
mov dword [esp + 0x34], esp
push ecx
lea ecx, [esp + 0x44]
mov dword [eax], 0x4632c4
call fcn.004010b0
lea ecx, [esi + 8]
push eax
mov byte [esp + 0x84], 0x10
call fcn.004023e0
mov byte [esp + 0x80], bl
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40403c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea esi, [edi + 0x34]
lea ebx, [esp + 0x34]
call fcn.00402240
mov byte [esp + 0x80], 4
mov esi, dword [esp + 0x38]
test esi, esi
je 0x403eaf
lea ecx, [esi + 8]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x403eaf
mov eax, dword [esi]
mov edx, dword [eax]
mov ecx, esi
call edx
lea eax, [esi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x403eaf
mov edx, dword [esi]
mov eax, dword [edx + 4]
mov ecx, esi
call eax
jmp 0x403eaf
lea ecx, [esp + 0x3c]
call fcn.0041eac0
mov edi, dword [esp + 0x18]
lea ecx, [esp + 0x3c]
call fcn.0041eac0
push ecx
mov eax, esp
lea ecx, [esp + 0x40]
mov dword [esp + 0x34], esp
mov dword [eax], str.register
call fcn.0041d270
test al, al
je 0x40413f
lea ecx, [esp + 0x3c]
call fcn.0041ea80
mov bl, 0x11
lea ecx, [ecx]
push ecx
mov eax, esp
lea ecx, [esp + 0x40]
mov dword [esp + 0x34], esp
mov dword [eax], str.file
call fcn.0041d270
test al, al
je 0x404136
lea ecx, [esp + 0x14]
push ecx
lea ecx, [esp + 0x40]
call fcn.00403630
lea edx, [esp + 0x14]
push edx
lea ecx, [edi + 0x4c]
mov byte [esp + 0x84], bl
call fcn.00404880
mov byte [esp + 0x80], 4
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4040d0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x4040d0
lea ecx, [esp + 0x3c]
call fcn.0041eac0
push ecx
mov eax, esp
lea ecx, [esp + 0x40]
mov dword [esp + 0x34], esp
mov dword [eax], str.updatehead
call fcn.0041d270
test al, al
je 0x4041a0
lea ecx, [esp + 0x2c]
push ecx
lea ecx, [esp + 0x40]
call fcn.00403630
lea ecx, [edi + 0x30]
push eax
mov byte [esp + 0x84], 0x12
call fcn.004023e0
mov byte [esp + 0x80], 4
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4041a0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push ecx
mov eax, esp
lea ecx, [esp + 0x40]
mov dword [esp + 0x34], esp
mov dword [eax], str.details
call fcn.0041d270
test al, al
je 0x4042e0
lea ecx, [esp + 0x3c]
call fcn.0041ea80
push ecx
mov eax, esp
lea ecx, [esp + 0x40]
mov dword [esp + 0x34], esp
mov dword [eax], str.update
call fcn.0041d270
test al, al
je 0x4042d7
mov edx, dword [0x46ea80]
mov eax, dword [edx + 0xc]
mov ecx, 0x46ea80
call eax
lea ebx, [eax + 0x10]
mov dword [esp + 0x14], ebx
lea ecx, [esp + 0x2c]
push ecx
lea ecx, [esp + 0x40]
mov byte [esp + 0x84], 0x13
call fcn.00403630
mov byte [esp + 0x80], 0x14
mov ecx, dword [eax]
lea eax, [ecx - 0x10]
lea esi, [ebx - 0x10]
cmp eax, esi
je 0x404275
cmp dword [esi + 0xc], 0
lea ebx, [esi + 0xc]
jl 0x404263
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x404263
push eax
call fcn.00402680
mov edi, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [ebx], eax
dec eax
test eax, eax
jg 0x404256
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
lea ebx, [edi + 0x10]
mov edi, dword [esp + 0x18]
mov dword [esp + 0x14], ebx
jmp 0x404275
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [esp + 0x1c]
call fcn.004025d0
mov ebx, dword [esp + 0x14]
mov byte [esp + 0x80], 0x13
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40429d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x14]
push ecx
lea ecx, [edi + 0x18]
call fcn.00404880
lea eax, [ebx - 0x10]
mov byte [esp + 0x80], 4
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4041c7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x4041c7
lea ecx, [esp + 0x3c]
call fcn.0041eac0
mov byte [esp + 0x80], 3
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x404308
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x80], 2
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x404330
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x80], 0
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x404358
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x3c]
mov dword [esp + 0x80], 0xffffffff
call fcn.0041bb30
mov al, 1
mov ecx, dword [esp + 0x78]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4