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

Disassembly:
push 0xffffffffffffffff
push 0x45a0b1
mov eax, dword fs:[0]
push eax
sub esp, 0xa0
push ebx
push ebp
push esi
push edi
mov eax, dword [0x4747c0]
xor eax, esp
push eax
lea eax, [esp + 0xb4]
mov dword fs:[0], eax
mov ebp, dword [esp + 0xc4]
push 0x170
mov dword [esp + 0x28], 0
call fcn.00421f49
add esp, 4
test eax, eax
je 0x403166
mov esi, eax
call fcn.0041fe30
jmp 0x403168
xor eax, eax
mov dword [ebp + 0xac], eax
lea eax, [esp + 0x24]
push eax
push 0x68
call fcn.0040f480
mov edi, dword [esp + 0x24]
mov esi, dword [ebp + 0xac]
call fcn.00420440
mov eax, dword [ebp + 0xac]
mov dword [esp + 0x1c], eax
lea ebx, [ebp + 0xf4]
test eax, eax
je 0x4031e5
mov esi, eax
mov eax, dword [esi + 0x38]
mov dword [esi + 0x74], ebx
mov dword [esp + 0x18], eax
test eax, eax
je 0x4031bc
lea ecx, [esp + 0x18]
push ecx
lea eax, [ebx + 0x50]
call fcn.0041f3b0
mov dword [eax], esi
mov eax, dword [ebx + 0x28]
lea esi, [ebx + 0x20]
mov dword [esp + 0x20], eax
test eax, eax
jge 0x4031cf
call fcn.004240a0
mov edi, eax
inc edi
call fcn.0041f9d0
mov edx, dword [esi + 4]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov dword [edx + ecx*4], eax
push 0x170
call fcn.00421f49
add esp, 4
test eax, eax
je 0x4031ff
mov esi, eax
call fcn.0041fe30
jmp 0x403201
xor eax, eax
lea edx, [esp + 0x24]
push edx
push 0x70
mov dword [ebp + 0xb0], eax
call fcn.0040f480
mov edi, dword [esp + 0x24]
mov esi, dword [ebp + 0xb0]
call fcn.00420440
mov eax, dword [ebp + 0xb0]
mov dword [esp + 0x1c], eax
test eax, eax
je 0x403278
mov esi, eax
mov eax, dword [esi + 0x38]
mov dword [esi + 0x74], ebx
mov dword [esp + 0x18], eax
test eax, eax
je 0x40324f
lea eax, [esp + 0x18]
push eax
lea eax, [ebx + 0x50]
call fcn.0041f3b0
mov dword [eax], esi
mov eax, dword [ebx + 0x28]
lea esi, [ebx + 0x20]
mov dword [esp + 0x20], eax
test eax, eax
jge 0x403262
call fcn.004240a0
mov edi, eax
inc edi
call fcn.0041f9d0
mov ecx, dword [esi + 4]
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
mov dword [ecx + eax*4], edx
push 0x170
call fcn.00421f49
add esp, 4
test eax, eax
je 0x403292
mov esi, eax
call fcn.0041fe30
jmp 0x403294
xor eax, eax
lea ecx, [esp + 0x24]
push ecx
push 0x71
mov dword [ebp + 0xb4], eax
call fcn.0040f480
mov edi, dword [esp + 0x24]
mov esi, dword [ebp + 0xb4]
call fcn.00420440
mov eax, dword [ebp + 0xb4]
mov dword [esp + 0x1c], eax
test eax, eax
je 0x403303
mov esi, eax
mov eax, dword [esi + 0x38]
mov dword [esi + 0x74], ebx
mov dword [esp + 0x18], eax
test eax, eax
je 0x4032e2
lea edx, [esp + 0x18]
push edx
lea eax, [ebx + 0x50]
call fcn.0041f3b0
mov dword [eax], esi
lea esi, [ebx + 0x20]
mov ebx, dword [esi + 8]
test ebx, ebx
jge 0x4032f1
call fcn.004240a0
lea edi, [ebx + 1]
call fcn.0041f9d0
mov eax, dword [esi + 4]
mov ecx, dword [esp + 0x1c]
mov dword [eax + ebx*4], ecx
push 0x170
call fcn.00421f49
add esp, 4
test eax, eax
je 0x40331d
mov esi, eax
call fcn.0041fe30
jmp 0x40331f
xor eax, eax
push 0x4629cc
lea ecx, [esp + 0x20]
mov dword [ebp + 0xb8], eax
call fcn.0040b3d0
mov dword [esp + 0xbc], 0
mov esi, dword [ebp + 0xb8]
lea ebx, [esp + 0x1c]
call fcn.004204a0
or edi, 0xffffffff
mov dword [esp + 0xbc], edi
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
mov ecx, edi
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x403376
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp + 0xb8]
mov ecx, 0xff000000
cmp dword [eax + 0x78], ecx
je 0x4033c1
mov dword [eax + 0x78], ecx
mov ecx, dword [eax + 0x74]
test ecx, ecx
je 0x4033c1
mov edx, dword [eax + 0x58]
mov dword [esp + 0x28], edx
mov edx, dword [eax + 0x5c]
mov dword [esp + 0x2c], edx
mov edx, dword [eax + 0x60]
mov eax, dword [eax + 0x64]
mov dword [esp + 0x30], edx
mov dword [esp + 0x34], eax
mov ecx, dword [ecx + 0x6c]
test ecx, ecx
je 0x4033c1
push 1
lea edx, [esp + 0x2c]
push edx
push ecx
call dword [sym.imp.USER32.dll_InvalidateRect]
mov eax, dword [ebp + 0xb8]
mov dword [eax + 0x84], 0xc
mov ebx, dword [ebp + 0xb8]
test ebx, ebx
je 0x403426
mov eax, dword [ebx + 0x38]
lea esi, [ebp + 0xf4]
mov dword [ebx + 0x74], esi
mov dword [esp + 0x18], eax
test eax, eax
je 0x4033fe
lea eax, [esp + 0x18]
push eax
lea eax, [esi + 0x50]
call fcn.0041f3b0
mov dword [eax], ebx
mov eax, dword [esi + 0x28]
add esi, 0x20
mov dword [esp + 0x18], eax
test eax, eax
jge 0x403411
call fcn.004240a0
lea edi, [eax + 1]
call fcn.0041f9d0
mov ecx, dword [esi + 4]
mov edx, dword [esp + 0x18]
mov dword [ecx + edx*4], ebx
or edi, 0xffffffff
push 0x170
call fcn.00421f49
add esp, 4
test eax, eax
je 0x403440
mov esi, eax
call fcn.0041fe30
jmp 0x403442
xor eax, eax
mov dword [ebp + 0xc0], eax
lea eax, [esp + 0x18]
push eax
push ebp
call fcn.004078c0
mov dword [esp + 0xbc], 1
mov esi, dword [ebp + 0xc0]
mov ebx, eax
call fcn.004204a0
mov dword [esp + 0xbc], edi
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
mov edx, edi
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403491
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp + 0xc0]
cmp dword [eax + 0x78], edi
je 0x4034d7
mov ecx, dword [eax + 0x74]
mov dword [eax + 0x78], edi
test ecx, ecx
je 0x4034d7
mov edx, dword [eax + 0x58]
mov dword [esp + 0x28], edx
mov edx, dword [eax + 0x5c]
mov dword [esp + 0x2c], edx
mov edx, dword [eax + 0x60]
mov eax, dword [eax + 0x64]
mov dword [esp + 0x30], edx
mov dword [esp + 0x34], eax
mov ecx, dword [ecx + 0x6c]
test ecx, ecx
je 0x4034d7
push 1
lea edx, [esp + 0x2c]
push edx
push ecx
call dword [sym.imp.USER32.dll_InvalidateRect]
mov eax, dword [ebp + 0xc0]
mov dword [eax + 0x84], 0x10
mov eax, dword [ebp + 0xc0]
mov dword [eax + 4], 1
mov ebx, dword [ebp + 0xc0]
test ebx, ebx
je 0x403546
mov eax, dword [ebx + 0x38]
lea esi, [ebp + 0xf4]
mov dword [ebx + 0x74], esi
mov dword [esp + 0x18], eax
test eax, eax
je 0x403521
lea eax, [esp + 0x18]
push eax
lea eax, [esi + 0x50]
call fcn.0041f3b0
mov dword [eax], ebx
mov eax, dword [esi + 0x28]
add esi, 0x20
mov dword [esp + 0x18], eax
test eax, eax
jge 0x403534
call fcn.004240a0
lea edi, [eax + 1]
call fcn.0041f9d0
mov ecx, dword [esi + 4]
mov edx, dword [esp + 0x18]
mov dword [ecx + edx*4], ebx
push 0x170
call fcn.00421f49
add esp, 4
test eax, eax
je 0x403560
mov esi, eax
call fcn.0041fe30
jmp 0x403562
xor eax, eax
mov dword [ebp + 0xbc], eax
lea eax, [esp + 0x24]
push eax
push 0x6d
call fcn.0040f480
mov edi, dword [esp + 0x24]
mov esi, dword [ebp + 0xbc]
call fcn.00420440
mov ebx, dword [ebp + 0xbc]
test ebx, ebx
je 0x4035d5
mov eax, dword [ebx + 0x38]
lea esi, [ebp + 0xf4]
mov dword [ebx + 0x74], esi
mov dword [esp + 0x18], eax
test eax, eax
je 0x4035b0
lea ecx, [esp + 0x18]
push ecx
lea eax, [esi + 0x50]
call fcn.0041f3b0
mov dword [eax], ebx
mov eax, dword [esi + 0x28]
add esi, 0x20
mov dword [esp + 0x18], eax
test eax, eax
jge 0x4035c3
call fcn.004240a0
lea edi, [eax + 1]
call fcn.0041f9d0
mov edx, dword [esi + 4]
mov eax, dword [esp + 0x18]
mov dword [edx + eax*4], ebx
push 0x70
push ebp
lea ecx, [esp + 0x78]
xor eax, eax
push ecx
push 0x40010080
lea ecx, [ebp + 0x170]
mov dword [esp + 0x80], 0
mov dword [esp + 0x84], eax
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], eax
call fcn.0042c772
push 0x170
call fcn.00421f49
add esp, 4
test eax, eax
je 0x403629
mov esi, eax
call fcn.0041fe30
jmp 0x40362b
xor eax, eax
mov ecx, 0xffaaaaaa
mov dword [ebp + 0xec], eax
cmp dword [eax + 0x78], ecx
je 0x403676
mov dword [eax + 0x78], ecx
mov ecx, dword [eax + 0x74]
test ecx, ecx
je 0x403676
mov edx, dword [eax + 0x58]
mov dword [esp + 0x28], edx
mov edx, dword [eax + 0x5c]
mov dword [esp + 0x2c], edx
mov edx, dword [eax + 0x60]
mov eax, dword [eax + 0x64]
mov dword [esp + 0x30], edx
mov dword [esp + 0x34], eax
mov ecx, dword [ecx + 0x6c]
test ecx, ecx
je 0x403676
push 1
lea edx, [esp + 0x2c]
push edx
push ecx
call dword [sym.imp.USER32.dll_InvalidateRect]
mov ebx, dword [ebp + 0xec]
test ebx, ebx
je 0x4036c8
mov eax, dword [ebx + 0x38]
lea esi, [ebp + 0xf4]
mov dword [ebx + 0x74], esi
mov dword [esp + 0x18], eax
test eax, eax
je 0x4036a3
lea eax, [esp + 0x18]
push eax
lea eax, [esi + 0x50]
call fcn.0041f3b0
mov dword [eax], ebx
mov eax, dword [esi + 0x28]
add esi, 0x20
mov dword [esp + 0x18], eax
test eax, eax
jge 0x4036b6
call fcn.004240a0
lea edi, [eax + 1]
call fcn.0041f9d0
mov ecx, dword [esi + 4]
mov edx, dword [esp + 0x18]
mov dword [ecx + edx*4], ebx
push 0x174
call fcn.00421f49
mov esi, eax
add esp, 4
test esi, esi
je 0x4036f4
call fcn.0041fe30
mov dword [esi], vtable.CUIButton.0
mov dword [esi + 0x170], 0
mov eax, esi
jmp 0x4036f6
xor eax, eax
mov dword [ebp + 0xc8], eax
lea ecx, [ebp + 0x54]
mov dword [eax + 0x44], ecx
mov eax, dword [ebp + 0xc8]
mov dword [eax + 0x38], 0x3e9
lea eax, [esp + 0x24]
push eax
push 0x69
call fcn.0040f480
mov edi, dword [esp + 0x24]
mov esi, dword [ebp + 0xc8]
call fcn.00420440
xor eax, eax
xor ecx, ecx
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 0xc8]
mov dword [esp + 0x2c], ecx
lea ecx, [esp + 0x28]
mov esi, 0x22
push ecx
add eax, 0xe0
mov edx, 0x5c
mov dword [esp + 0x38], esi
mov esi, dword [sym.imp.USER32.dll_CopyRect]
push eax
mov dword [esp + 0x38], edx
call esi
xor eax, eax
mov edx, 0x5c
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 0xc8]
mov dword [esp + 0x30], edx
lea edx, [esp + 0x28]
push edx
add eax, 0xf0
mov ecx, 0x22
mov edi, 0x44
push eax
mov dword [esp + 0x34], ecx
mov dword [esp + 0x3c], edi
call esi
mov ebx, dword [ebp + 0xc8]
test ebx, ebx
je 0x4037e7
mov eax, dword [ebx + 0x38]
lea esi, [ebp + 0xf4]
mov dword [ebx + 0x74], esi
mov dword [esp + 0x18], eax
test eax, eax
je 0x4037c2
lea eax, [esp + 0x18]
push eax
lea eax, [esi + 0x50]
call fcn.0041f3b0
mov dword [eax], ebx
mov eax, dword [esi + 0x28]
add esi, 0x20
mov dword [esp + 0x1c], eax
test eax, eax
jge 0x4037d5
call fcn.004240a0
mov edi, eax
inc edi
call fcn.0041f9d0
mov ecx, dword [esi + 4]
mov edx, dword [esp + 0x1c]
mov dword [ecx + edx*4], ebx
push 0x174
call fcn.00421f49
mov esi, eax
add esp, 4
test esi, esi
je 0x403813
call fcn.0041fe30
mov dword [esi], vtable.CUIButton.0
mov dword [esi + 0x170], 0
mov eax, esi
jmp 0x403815
xor eax, eax
mov dword [ebp + 0xcc], eax
lea ecx, [ebp + 0x54]
mov dword [eax + 0x44], ecx
mov eax, dword [ebp + 0xcc]
mov dword [eax + 0x38], 0x3ea
lea eax, [esp + 0x24]
push eax
push 0x6a
call fcn.0040f480
mov edi, dword [esp + 0x24]
mov esi, dword [ebp + 0xcc]
call fcn.00420440
xor eax, eax
xor ecx, ecx
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 0xcc]
mov dword [esp + 0x2c], ecx
lea ecx, [esp + 0x28]
mov esi, 0x1d
push ecx
add eax, 0xe0
mov edx, 0x5e
mov dword [esp + 0x38], esi
mov esi, dword [sym.imp.USER32.dll_CopyRect]
push eax
mov dword [esp + 0x38], edx
call esi
xor eax, eax
mov edx, 0x5e
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 0xcc]
mov dword [esp + 0x30], edx
lea edx, [esp + 0x28]
push edx
add eax, 0xf0
mov ecx, 0x1e
mov edi, 0x3b
push eax
mov dword [esp + 0x34], ecx
mov dword [esp + 0x3c], edi
call esi
xor eax, eax
mov ecx, 0x3c
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 0xcc]
mov dword [esp + 0x2c], ecx
lea ecx, [esp + 0x28]
push ecx
add eax, 0x100
mov edx, 0x5e
mov edi, 0x59
push eax
mov dword [esp + 0x38], edx
mov dword [esp + 0x3c], edi
call esi
push 0x4629d8
lea ecx, [esp + 0x20]
call fcn.0040b3d0
mov dword [esp + 0xbc], 2
mov esi, dword [ebp + 0xcc]
lea ebx, [esp + 0x1c]
call fcn.004204a0
mov dword [esp + 0xbc], 0xffffffff
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40393b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp + 0xcc]
or ecx, 0xffffffff
cmp dword [eax + 0x78], ecx
je 0x403984
mov dword [eax + 0x78], ecx
mov ecx, dword [eax + 0x74]
test ecx, ecx
je 0x403984
mov edx, dword [eax + 0x58]
mov dword [esp + 0x28], edx
mov edx, dword [eax + 0x5c]
mov dword [esp + 0x2c], edx
mov edx, dword [eax + 0x60]
mov eax, dword [eax + 0x64]
mov dword [esp + 0x30], edx
mov dword [esp + 0x34], eax
mov ecx, dword [ecx + 0x6c]
test ecx, ecx
je 0x403984
push 1
lea edx, [esp + 0x2c]
push edx
push ecx
call dword [sym.imp.USER32.dll_InvalidateRect]
mov eax, dword [ebp + 0xcc]
mov dword [eax + 0x84], 0xe
mov eax, dword [ebp + 0xcc]
add eax, 0x88
mov ecx, 0xa
mov dword [eax], ecx
lea edx, [ecx - 5]
xor esi, esi
mov dword [eax + 4], edx
xor edi, edi
mov dword [eax + 8], esi
mov dword [eax + 0xc], edi
mov ebx, dword [ebp + 0xcc]
test ebx, ebx
je 0x403a08
mov eax, dword [ebx + 0x38]
lea esi, [ebp + 0xf4]
mov dword [ebx + 0x74], esi
mov dword [esp + 0x18], eax
test eax, eax
je 0x4039e3
lea ecx, [esp + 0x18]
push ecx
lea eax, [esi + 0x50]
call fcn.0041f3b0
mov dword [eax], ebx
mov eax, dword [esi + 0x28]
add esi, 0x20
mov dword [esp + 0x18], eax
test eax, eax
jge 0x4039f6
call fcn.004240a0
lea edi, [eax + 1]
call fcn.0041f9d0
mov edx, dword [esi + 4]
mov eax, dword [esp + 0x18]
mov dword [edx + eax*4], ebx
push 0x174
call fcn.00421f49
mov esi, eax
add esp, 4
test esi, esi
je 0x403a34
call fcn.0041fe30
mov dword [esi], vtable.CUIButton.0
mov dword [esi + 0x170], 0
mov eax, esi
jmp 0x403a36
xor eax, eax
mov dword [ebp + 0xd8], eax
lea ecx, [ebp + 0x54]
lea edx, [esp + 0x24]
mov dword [eax + 0x44], ecx
mov ecx, dword [ebp + 0xd8]
push edx
push 0x77
mov dword [ecx + 0x38], 0x3eb
call fcn.0040f480
mov edi, dword [esp + 0x24]
mov esi, dword [ebp + 0xd8]
call fcn.00420440
mov ebx, dword [sym.imp.USER32.dll_CopyRect]
xor ecx, ecx
xor eax, eax
mov dword [esp + 0x2c], ecx
mov ecx, dword [ebp + 0xd8]
mov dword [esp + 0x28], eax
lea eax, [esp + 0x28]
push eax
add ecx, 0xe0
mov edx, 0xd9
mov esi, 0x3e
push ecx
mov dword [esp + 0x38], edx
mov dword [esp + 0x3c], esi
call ebx
xor eax, eax
mov edx, 0xd9
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 0xd8]
mov dword [esp + 0x30], edx
lea edx, [esp + 0x28]
mov ecx, esi
push edx
add eax, 0xf0
mov esi, 0x7c
push eax
mov dword [esp + 0x34], ecx
mov dword [esp + 0x3c], esi
call ebx
mov ecx, esi
mov edx, 0xd9
mov dword [esp + 0x30], edx
mov edx, dword [ebp + 0xd8]
mov dword [esp + 0x2c], ecx
lea ecx, [esp + 0x28]
push ecx
add edx, 0x100
xor eax, eax
mov esi, 0xba
push edx
mov dword [esp + 0x30], eax
mov dword [esp + 0x3c], esi
call ebx
mov eax, dword [ebp + 0xd8]
mov dword [esp + 0x1c], eax
test eax, eax
je 0x403b61
mov edi, eax
mov eax, dword [edi + 0x38]
lea esi, [ebp + 0xf4]
mov dword [edi + 0x74], esi
mov dword [esp + 0x18], eax
test eax, eax
je 0x403b38
lea eax, [esp + 0x18]
push eax
lea eax, [esi + 0x50]
call fcn.0041f3b0
mov dword [eax], edi
mov eax, dword [esi + 0x28]
add esi, 0x20
mov dword [esp + 0x20], eax
test eax, eax
jge 0x403b4b
call fcn.004240a0
mov edi, eax
inc edi
call fcn.0041f9d0
mov ecx, dword [esi + 4]
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
mov dword [ecx + eax*4], edx
push 0x174
call fcn.00421f49
mov esi, eax
add esp, 4
test esi, esi
je 0x403b8d
call fcn.0041fe30
mov dword [esi], vtable.CUIButton.0
mov dword [esi + 0x170], 0
mov eax, esi
jmp 0x403b8f
xor eax, eax
mov dword [ebp + 0xd0], eax
lea ecx, [ebp + 0x54]
lea edx, [esp + 0x24]
mov dword [eax + 0x44], ecx
mov ecx, dword [ebp + 0xd0]
push edx
push 0x6c
mov dword [ecx + 0x38], 0x3ec
call fcn.0040f480
mov edi, dword [esp + 0x24]
mov esi, dword [ebp + 0xd0]
call fcn.00420440
xor ecx, ecx
xor eax, eax
mov dword [esp + 0x2c], ecx
mov ecx, dword [ebp + 0xd0]
mov dword [esp + 0x28], eax
lea eax, [esp + 0x28]
push eax
add ecx, 0xe0
mov edx, 0x21
mov esi, 0x23
push ecx
mov dword [esp + 0x38], edx
mov dword [esp + 0x3c], esi
call ebx
mov eax, 0x21
mov edx, 0x42
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 0xd0]
mov dword [esp + 0x30], edx
lea edx, [esp + 0x28]
push edx
add eax, 0xf0
xor ecx, ecx
push eax
mov dword [esp + 0x34], ecx
mov dword [esp + 0x3c], esi
call ebx
xor ecx, ecx
mov edx, 0x63
mov dword [esp + 0x30], edx
mov edx, dword [ebp + 0xd0]
mov dword [esp + 0x2c], ecx
lea ecx, [esp + 0x28]
push ecx
add edx, 0x120
mov eax, 0x42
push edx
mov dword [esp + 0x30], eax
mov dword [esp + 0x3c], esi
call ebx
mov eax, dword [ebp + 0xd0]
mov dword [esp + 0x1c], eax
test eax, eax
je 0x403cb0
mov edi, eax
mov eax, dword [edi + 0x38]
lea esi, [ebp + 0xf4]
mov dword [edi + 0x74], esi
mov dword [esp + 0x18], eax
test eax, eax
je 0x403c87
lea eax, [esp + 0x18]
push eax
lea eax, [esi + 0x50]
call fcn.0041f3b0
mov dword [eax], edi
mov eax, dword [esi + 0x28]
add esi, 0x20
mov dword [esp + 0x20], eax
test eax, eax
jge 0x403c9a
call fcn.004240a0
mov edi, eax
inc edi
call fcn.0041f9d0
mov ecx, dword [esi + 4]
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
mov dword [ecx + eax*4], edx
push 0x174
call fcn.00421f49
mov esi, eax
add esp, 4
test esi, esi
je 0x403cdc
call fcn.0041fe30
mov dword [esi], vtable.CUIButton.0
mov dword [esi + 0x170], 0
mov eax, esi
jmp 0x403cde
xor eax, eax
mov dword [ebp + 0xd4], eax
lea ecx, [ebp + 0x54]
lea edx, [esp + 0x24]
mov dword [eax + 0x44], ecx
mov ecx, dword [ebp + 0xd4]
push edx
push 0x76
mov dword [ecx + 0x38], 0x3ed
call fcn.0040f480
mov edi, dword [esp + 0x24]
mov esi, dword [ebp + 0xd4]
call fcn.00420440
xor ecx, ecx
xor eax, eax
mov dword [esp + 0x2c], ecx
mov ecx, dword [ebp + 0xd4]
mov dword [esp + 0x28], eax
lea eax, [esp + 0x28]
push eax
add ecx, 0xe0
mov edx, 0x21
mov esi, 0x23
push ecx
mov dword [esp + 0x38], edx
mov dword [esp + 0x3c], esi
call ebx
mov eax, 0x21
mov edx, 0x42
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 0xd4]
mov dword [esp + 0x30], edx
lea edx, [esp + 0x28]
push edx
add eax, 0xf0
xor ecx, ecx
push eax
mov dword [esp + 0x34], ecx
mov dword [esp + 0x3c], esi
call ebx
mov eax, dword [ebp + 0xd4]
mov dword [esp + 0x1c], eax
test eax, eax
je 0x403dcf
mov edi, eax
mov eax, dword [edi + 0x38]
lea esi, [ebp + 0xf4]
mov dword [edi + 0x74], esi
mov dword [esp + 0x18], eax
test eax, eax
je 0x403da6
lea ecx, [esp + 0x18]
push ecx
lea eax, [esi + 0x50]
call fcn.0041f3b0
mov dword [eax], edi
mov eax, dword [esi + 0x28]
add esi, 0x20
mov dword [esp + 0x20], eax
test eax, eax
jge 0x403db9
call fcn.004240a0
mov edi, eax
inc edi
call fcn.0041f9d0
mov edx, dword [esi + 4]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov dword [edx + ecx*4], eax
push 0x170
call fcn.00421f49
add esp, 4
test eax, eax
je 0x403de9
mov esi, eax
call fcn.0041fe30
jmp 0x403deb
xor eax, eax
lea edx, [esp + 0x24]
push edx
push 0x72
mov dword [ebp + 0xdc], eax
call fcn.0040f480
mov edi, dword [esp + 0x24]
mov esi, dword [ebp + 0xdc]
call fcn.00420440
mov eax, dword [ebp + 0xdc]
mov dword [esp + 0x1c], eax
test eax, eax
je 0x403e68
mov edi, eax
mov eax, dword [edi + 0x38]
lea esi, [ebp + 0xf4]
mov dword [edi + 0x74], esi
mov dword [esp + 0x18], eax
test eax, eax
je 0x403e3f
lea eax, [esp + 0x18]
push eax
lea eax, [esi + 0x50]
call fcn.0041f3b0
mov dword [eax], edi
mov eax, dword [esi + 0x28]
add esi, 0x20
mov dword [esp + 0x20], eax
test eax, eax
jge 0x403e52
call fcn.004240a0
mov edi, eax
inc edi
call fcn.0041f9d0
mov ecx, dword [esi + 4]
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
mov dword [ecx + eax*4], edx
push 0x170
call fcn.00421f49
add esp, 4
test eax, eax
je 0x403e82
mov esi, eax
call fcn.0041fe30
jmp 0x403e84
xor eax, eax
lea ecx, [esp + 0x24]
push ecx
push 0x73
mov dword [ebp + 0xe0], eax
call fcn.0040f480
mov edi, dword [esp + 0x24]
mov esi, dword [ebp + 0xe0]
call fcn.00420440
mov eax, dword [ebp + 0xe0]
mov dword [esp + 0x1c], eax
test eax, eax
je 0x403f01
mov edi, eax
mov eax, dword [edi + 0x38]
lea esi, [ebp + 0xf4]
mov dword [edi + 0x74], esi
mov dword [esp + 0x18], eax
test eax, eax
je 0x403ed8
lea edx, [esp + 0x18]
push edx
lea eax, [esi + 0x50]
call fcn.0041f3b0
mov dword [eax], edi
mov eax, dword [esi + 0x28]
add esi, 0x20
mov dword [esp + 0x20], eax
test eax, eax
jge 0x403eeb
call fcn.004240a0
mov edi, eax
inc edi
call fcn.0041f9d0
mov eax, dword [esi + 4]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
mov dword [eax + edx*4], ecx
push 0x170
call fcn.00421f49
add esp, 4
test eax, eax
je 0x403f1b
mov esi, eax
call fcn.0041fe30
jmp 0x403f1d
xor eax, eax
mov dword [ebp + 0xe4], eax
lea eax, [esp + 0x24]
push eax
push 0x74
call fcn.0040f480
mov edi, dword [esp + 0x24]
mov esi, dword [ebp + 0xe4]
call fcn.00420440
mov eax, dword [ebp + 0xe4]
mov dword [esp + 0x1c], eax
test eax, eax
je 0x403f9a
mov edi, eax
mov eax, dword [edi + 0x38]
lea esi, [ebp + 0xf4]
mov dword [edi + 0x74], esi
mov dword [esp + 0x18], eax
test eax, eax
je 0x403f71
lea ecx, [esp + 0x18]
push ecx
lea eax, [esi + 0x50]
call fcn.0041f3b0
mov dword [eax], edi
mov eax, dword [esi + 0x28]
add esi, 0x20
mov dword [esp + 0x20], eax
test eax, eax
jge 0x403f84
call fcn.004240a0
mov edi, eax
inc edi
call fcn.0041f9d0
mov edx, dword [esi + 4]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov dword [edx + ecx*4], eax
push 0x170
call fcn.00421f49
add esp, 4
test eax, eax
je 0x403fb4
mov esi, eax
call fcn.0041fe30
jmp 0x403fb6
xor eax, eax
lea edx, [esp + 0x24]
push edx
push 0x75
mov dword [ebp + 0xe8], eax
call fcn.0040f480
mov edi, dword [esp + 0x24]
mov esi, dword [ebp + 0xe8]
call fcn.00420440
mov eax, dword [ebp + 0xe8]
mov dword [esp + 0x1c], eax
test eax, eax
je 0x404033
mov edi, eax
mov eax, dword [edi + 0x38]
lea esi, [ebp + 0xf4]
mov dword [edi + 0x74], esi
mov dword [esp + 0x18], eax
test eax, eax
je 0x40400a
lea eax, [esp + 0x18]
push eax
lea eax, [esi + 0x50]
call fcn.0041f3b0
mov dword [eax], edi
mov eax, dword [esi + 0x28]
add esi, 0x20
mov dword [esp + 0x20], eax
test eax, eax
jge 0x40401d
call fcn.004240a0
mov edi, eax
inc edi
call fcn.0041f9d0
mov ecx, dword [esi + 4]
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
mov dword [ecx + eax*4], edx
push 0x180
call fcn.00421f49
add esp, 4
test eax, eax
je 0x40404b
call fcn.0041e710
jmp 0x40404d
xor eax, eax
lea ecx, [esp + 0x24]
push ecx
push 0x6f
mov dword [ebp + 0xf0], eax
call fcn.0040f480
mov edi, dword [esp + 0x24]
mov esi, dword [ebp + 0xf0]
call fcn.00420440
xor eax, eax
mov edx, 0x18
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 0xf0]
mov dword [esp + 0x30], edx
lea edx, [esp + 0x28]
push edx
add eax, 0xe0
mov ecx, 0x10
mov esi, 0x20
push eax
mov dword [esp + 0x34], ecx
mov dword [esp + 0x3c], esi
call ebx
xor ecx, ecx
mov edx, 0x18
mov dword [esp + 0x30], edx
mov edx, dword [ebp + 0xf0]
mov dword [esp + 0x2c], ecx
lea ecx, [esp + 0x28]
push ecx
add edx, 0xf0
xor eax, eax
mov esi, 0xd
push edx
mov dword [esp + 0x30], eax
mov dword [esp + 0x3c], esi
call ebx
mov eax, dword [ebp + 0xf0]
mov dword [eax + 0x17c], 0x18
mov eax, 2
xor ecx, ecx
mov edx, eax
mov dword [esp + 0x30], edx
mov edx, dword [ebp + 0xf0]
mov dword [esp + 0x2c], ecx
lea ecx, [esp + 0x28]
push ecx
add edx, 0x48
xor esi, esi
push edx
mov dword [esp + 0x30], eax
mov dword [esp + 0x3c], esi
call ebx
mov ebx, dword [ebp + 0xf0]
test ebx, ebx
je 0x404162
mov eax, dword [ebx + 0x38]
lea esi, [ebp + 0xf4]
mov dword [ebx + 0x74], esi
mov dword [esp + 0x18], eax
test eax, eax
je 0x40413d
lea eax, [esp + 0x18]
push eax
lea eax, [esi + 0x50]
call fcn.0041f3b0
mov dword [eax], ebx
mov eax, dword [esi + 0x28]
add esi, 0x20
mov dword [esp + 0x18], eax
test eax, eax
jge 0x404150
call fcn.004240a0
lea edi, [eax + 1]
call fcn.0041f9d0
mov ecx, dword [esi + 4]
mov edx, dword [esp + 0x18]
mov dword [ecx + edx*4], ebx
push 0x170
call fcn.00421f49
add esp, 4
test eax, eax
je 0x40417c
mov esi, eax
call fcn.0041fe30
jmp 0x40417e
xor eax, eax
lea ebx, [ebp + 0x1c8]
mov esi, eax
mov dword [ebp + 0xc4], eax
call fcn.004204a0
mov eax, dword [ebp + 0xc4]
mov ecx, 0xff000000
xor edi, edi
cmp dword [eax + 0x78], ecx
je 0x4041de
mov dword [eax + 0x78], ecx
mov ecx, dword [eax + 0x74]
cmp ecx, edi
je 0x4041de
mov edx, dword [eax + 0x58]
mov dword [esp + 0x28], edx
mov edx, dword [eax + 0x5c]
mov dword [esp + 0x2c], edx
mov edx, dword [eax + 0x60]
mov eax, dword [eax + 0x64]
mov dword [esp + 0x30], edx
mov dword [esp + 0x34], eax
mov ecx, dword [ecx + 0x6c]
cmp ecx, edi
je 0x4041de
push 1
lea edx, [esp + 0x2c]
push edx
push ecx
call dword [sym.imp.USER32.dll_InvalidateRect]
mov eax, dword [ebp + 0xc4]
mov dword [eax + 0x84], 0xc
mov ebx, dword [ebp + 0xc4]
cmp ebx, edi
je 0x404242
mov eax, dword [ebx + 0x38]
lea esi, [ebp + 0xf4]
mov dword [ebx + 0x74], esi
mov dword [esp + 0x18], eax
cmp eax, edi
je 0x40421b
lea ecx, [esp + 0x18]
push ecx
lea eax, [esi + 0x50]
call fcn.0041f3b0
mov dword [eax], ebx
mov eax, dword [esi + 0x28]
add esi, 0x20
cmp eax, edi
mov dword [esp + 0x18], eax
jge 0x40422e
call fcn.004240a0
lea edi, [eax + 1]
call fcn.0041f9d0
mov edx, dword [esi + 4]
mov eax, dword [esp + 0x18]
mov dword [edx + eax*4], ebx
xor edi, edi
mov eax, dword [ebp + 0x8c]
cmp eax, edi
mov dword [esp + 0x3c], eax
mov dword [esp + 0x20], edi
jle 0x404625
mov dword [esp + 0xac], 0xf
mov dword [esp + 0x1c], edi
jmp 0x404272
xor edi, edi
push 0x174
call fcn.00421f49
mov esi, eax
add esp, 4
cmp esi, edi
je 0x40429a
call fcn.0041fe30
mov dword [esi], vtable.CUIButton.0
mov dword [esi + 0x170], edi
mov ebx, esi
jmp 0x40429c
xor ebx, ebx
mov ecx, dword [esp + 0x20]
lea edx, [esp + 0x24]
push edx
lea eax, [ebp + 0x54]
add ecx, 0x3ef
push 0x6b
mov dword [ebx + 0x44], eax
mov dword [ebx + 0x38], ecx
call fcn.0040f480
mov esi, dword [esp + 0x24]
cmp esi, edi
je 0x404310
mov ecx, dword [ebx + 0x34]
cmp ecx, edi
je 0x4042d5
mov eax, dword [ecx]
mov edx, dword [eax]
push 1
call edx
mov dword [ebx + 0x34], edi
mov eax, dword [ebx + 0x74]
mov dword [ebx + 0x34], esi
cmp eax, edi
je 0x404310
mov ecx, dword [ebx + 0x58]
mov edx, dword [ebx + 0x5c]
mov dword [esp + 0x28], ecx
mov ecx, dword [ebx + 0x60]
mov dword [esp + 0x2c], edx
mov edx, dword [ebx + 0x64]
mov dword [esp + 0x30], ecx
mov dword [esp + 0x34], edx
mov eax, dword [eax + 0x6c]
cmp eax, edi
je 0x404310
push 1
lea ecx, [esp + 0x2c]
push ecx
push eax
call dword [sym.imp.USER32.dll_InvalidateRect]
mov esi, dword [sym.imp.USER32.dll_CopyRect]
xor eax, eax
mov dword [esp + 0x90], eax
mov dword [esp + 0x94], eax
mov eax, 0xf
lea edx, [esp + 0x90]
mov dword [esp + 0x98], eax
mov dword [esp + 0x9c], eax
push edx
lea eax, [ebx + 0xe0]
push eax
call esi
mov ecx, dword [esp + 0xac]
mov eax, 0xf
mov dword [esp + 0x40], eax
xor eax, eax
mov dword [esp + 0x44], eax
mov eax, 0x1e
lea edx, [esp + 0x40]
mov dword [esp + 0x48], eax
push edx
lea eax, [ebx + 0xf0]
push eax
mov dword [esp + 0x54], ecx
call esi
mov esi, 1
mov dword [ebx + 0x170], esi
cmp dword [ebx + 0x70], esi
je 0x404404
mov ecx, dword [ebx + 0x40]
cmp ecx, edi
je 0x4043ac
mov eax, dword [ebx + 0x74]
cmp eax, edi
je 0x4043ac
push ecx
push eax
call fcn.0041ee90
cmp eax, edi
je 0x4043ac
push edi
mov ecx, eax
call fcn.00421450
mov ecx, dword [ebx + 0x3c]
mov eax, ecx
or eax, 4
cmp ecx, eax
je 0x4043f2
mov dword [ebx + 0x3c], eax
mov eax, dword [ebx + 0x74]
cmp eax, edi
je 0x4043f2
mov ecx, dword [ebx + 0x58]
mov edx, dword [ebx + 0x5c]
mov dword [esp + 0x50], ecx
mov ecx, dword [ebx + 0x60]
mov dword [esp + 0x54], edx
mov edx, dword [ebx + 0x64]
mov dword [esp + 0x58], ecx
mov dword [esp + 0x5c], edx
mov eax, dword [eax + 0x6c]
cmp eax, edi
je 0x4043f2
push esi
lea ecx, [esp + 0x54]
push ecx
push eax
call dword [sym.imp.USER32.dll_InvalidateRect]
mov ecx, dword [ebx + 0x44]
mov dword [ebx + 0x70], esi
cmp ecx, edi
je 0x404404
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
push ebx
call eax
mov eax, dword [ebx + 0x38]
lea esi, [ebp + 0xf4]
mov dword [ebx + 0x74], esi
mov dword [esp + 0x18], eax
cmp eax, edi
je 0x404427
lea ecx, [esp + 0x18]
push ecx
lea eax, [esi + 0x50]
call fcn.0041f3b0
mov dword [eax], ebx
mov eax, dword [esi + 0x28]
add esi, 0x20
cmp eax, edi
mov dword [esp + 0x38], eax
jl 0x4031ca
mov edi, eax
inc edi
call fcn.0041f9d0
mov edx, dword [esi + 4]
mov eax, dword [esp + 0x38]
push 0x170
mov dword [edx + eax*4], ebx
call fcn.00421f49
add esp, 4
test eax, eax
je 0x40446b
mov esi, eax
call fcn.0041fe30
mov esi, eax
mov dword [esp + 0x38], esi
jmp 0x404477
mov dword [esp + 0x38], 0
mov esi, dword [esp + 0x38]
mov eax, dword [esp + 0x1c]
test eax, eax
jl 0x4031ca
mov ecx, dword [esp + 0x20]
cmp ecx, dword [ebp + 0x8c]
jge 0x4031ca
mov ecx, dword [ebp + 0x88]
mov edx, dword [ecx + eax]
add ecx, eax
test edx, edx
je 0x404641
mov eax, dword [esi + 0xd0]
lea esp, [esp]
mov di, word [eax]
cmp di, word [edx]
jne 0x4044d6
test di, di
je 0x4044d2
mov di, word [eax + 2]
cmp di, word [edx + 2]
jne 0x4044d6
add eax, 4
add edx, 4
test di, di
jne 0x4044b0
xor eax, eax
jmp 0x4044db
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x404523
push ecx
lea ecx, [esi + 0xd0]
call fcn.0040c110
mov eax, dword [esi + 0x74]
test eax, eax
je 0x404523
mov edx, dword [esi + 0x58]
mov ecx, dword [esi + 0x5c]
mov dword [esp + 0x60], edx
mov edx, dword [esi + 0x60]
mov dword [esp + 0x64], ecx
mov ecx, dword [esi + 0x64]
mov dword [esp + 0x68], edx
mov dword [esp + 0x6c], ecx
mov eax, dword [eax + 0x6c]
test eax, eax
je 0x404523
push 1
lea edx, [esp + 0x64]
push edx
push eax
call dword [sym.imp.USER32.dll_InvalidateRect]
mov eax, 0xff000000
cmp dword [esi + 0x78], eax
je 0x404577
mov dword [esi + 0x78], eax
mov eax, dword [esi + 0x74]
test eax, eax
je 0x404577
mov ecx, dword [esi + 0x58]
mov edx, dword [esi + 0x5c]
mov dword [esp + 0x80], ecx
mov ecx, dword [esi + 0x60]
mov dword [esp + 0x84], edx
mov edx, dword [esi + 0x64]
mov dword [esp + 0x88], ecx
mov dword [esp + 0x8c], edx
mov eax, dword [eax + 0x6c]
test eax, eax
je 0x404577
push 1
lea ecx, [esp + 0x84]
push ecx
push eax
call dword [sym.imp.USER32.dll_InvalidateRect]
mov dword [esi + 0x84], 0xd
mov eax, dword [esi + 0x38]
lea edi, [ebp + 0xf4]
mov dword [esi + 0x74], edi
mov dword [esp + 0x18], eax
test eax, eax
je 0x4045a4
lea edx, [esp + 0x18]
push edx
lea eax, [edi + 0x50]
call fcn.0041f3b0
mov dword [eax], esi
mov eax, dword [edi + 0x28]
lea esi, [edi + 0x20]
mov dword [esp + 0x18], eax
test eax, eax
jl 0x4031ca
mov edi, eax
inc edi
call fcn.0041f9d0
mov eax, dword [esi + 4]
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x38]
lea esi, [ebp + 0x70]
mov dword [eax + edx*4], ecx
mov eax, dword [esi + 8]
mov dword [esp + 0x18], eax
test eax, eax
jl 0x4031ca
mov edi, eax
inc edi
call fcn.0040ccf0
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0xa8]
add dword [esp + 0x1c], 0x2c
shl eax, 4
add eax, dword [esi + 4]
mov dword [eax], ebx
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0xac]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov eax, dword [esp + 0x20]
inc eax
cmp eax, dword [esp + 0x3c]
mov dword [esp + 0x20], eax
jl 0x404270
mov ecx, dword [esp + 0xb4]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xac
ret 4
push 0x80004005
call fcn.00401000
int3