Function at 0x4157f0
Capabilities:
Reference sql statements
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x468093
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xe20
mov eax, dword [0x487cdc]
push ebx
push ebp
push esi
push edi
mov dword [esp + 0x20], ecx
push 0x46fa3c
lea ecx, [esp + 0x2c]
mov dword [esp + 0xe30], eax
call fcn.004049d0
mov esi, dword [esp + 0xe40]
mov eax, dword [esi + 0xc0]
xor ebx, ebx
mov edi, 0x10
cmp eax, edi
mov dword [esp + 0xe38], ebx
jb 0x415854
mov eax, dword [esi + 0xac]
jmp 0x41585a
lea eax, [esi + 0xac]
push eax
call fcn.004471d5
mov ebp, eax
mov eax, dword [esi + 0x6c]
add esp, 4
cmp eax, edi
jb 0x415871
mov eax, dword [esi + 0x58]
jmp 0x415874
lea eax, [esi + 0x58]
push eax
call fcn.004471d5
add esp, 4
push 0xffffffffffffffff
mov dword [esp + 0x54], eax
push ebx
lea eax, [esi + 0x70]
push eax
lea ecx, [esp + 0x290]
mov dword [esp + 0x40], ebx
mov dword [esp + 0x2a8], 0xf
mov dword [esp + 0x2a4], ebx
mov byte [esp + 0x294], 0
call fcn.00403ac0
cmp dword [esi + 0xa4], edi
mov byte [esp + 0xe38], 1
jb 0x4158ca
mov eax, dword [esi + 0x90]
jmp 0x4158d0
lea eax, [esi + 0x90]
push eax
call fcn.004471d5
lea ecx, [esp + 0x288]
push ecx
mov dword [esp + 0x40], eax
call fcn.00404b70
mov eax, dword [esp + 0x2a4]
add esp, 8
cmp eax, edi
mov eax, dword [esp + 0x288]
jae 0x415903
lea eax, [esp + 0x288]
push eax
lea edx, [esp + 0x2c]
push str.SELECT_class_id_FROM_gm_class_WHERE_class_name___s
push edx
call fcn.0042f210
mov ecx, dword [esp + 0x2c]
add esp, 0xc
push 1
lea eax, [esp + 0x2c]
push eax
call fcn.0040dbc0
test eax, eax
jne 0x41596a
push 0x101
push str..GMUpdateDBThread.cpp
push 2
push 0x124fe
call fcn.004310d0
mov eax, dword [esp + 0x2ac]
add esp, 0x10
cmp eax, edi
jb 0x41595e
mov ecx, dword [esp + 0x288]
push ecx
call fcn.0045ce75
add esp, 4
mov dword [esp + 0x298], ebx
jmp 0x41758a
mov edi, dword [esp + 0x20]
mov eax, dword [edi + 0xdc]
add edi, 0xdc
mov ecx, edi
call dword [eax + 0x28]
test eax, eax
jbe 0x415a8c
push 8
push str.class_id
lea ecx, [esp + 0x5c]
mov dword [esp + 0x74], 0xf
mov dword [esp + 0x70], ebx
mov byte [esp + 0x60], 0
call fcn.00403bf0
mov edx, dword [edi]
lea eax, [esp + 0x54]
push eax
push ebx
lea ecx, [esp + 0x80]
push ecx
mov ecx, edi
mov byte [esp + 0xe44], 2
call dword [edx + 0x30]
cmp dword [eax + 0x18], 0x10
mov byte [esp + 0xe38], 3
jb 0x4159d8
mov eax, dword [eax + 4]
jmp 0x4159db
add eax, 4
push eax
lea edx, [esp + 0x98]
push edx
call fcn.00430960
mov ecx, dword [eax + 0x18]
mov edi, 0x10
add esp, 8
cmp ecx, edi
jb 0x4159fd
mov eax, dword [eax + 4]
jmp 0x415a00
add eax, 4
push eax
call fcn.004471d5
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0xb0]
add esp, 4
cmp eax, edi
jb 0x415a28
mov eax, dword [esp + 0x98]
push eax
call fcn.0045ce75
add esp, 4
cmp dword [esp + 0x90], edi
mov dword [esp + 0xac], 0xf
mov dword [esp + 0xa8], ebx
mov byte [esp + 0x98], 0
jb 0x415a58
mov ecx, dword [esp + 0x7c]
push ecx
call fcn.0045ce75
add esp, 4
cmp dword [esp + 0x6c], edi
mov dword [esp + 0x90], 0xf
mov dword [esp + 0x8c], ebx
mov byte [esp + 0x7c], 0
mov byte [esp + 0xe38], 1
jb 0x415a91
mov edx, dword [esp + 0x58]
push edx
call fcn.0045ce75
add esp, 4
jmp 0x415a91
mov edi, 0x10
mov eax, dword [esp + 0x34]
neg eax
sbb eax, eax
and eax, ebp
mov dword [esp + 0x3c], eax
lea eax, [esp + 0x1f]
push eax
lea ecx, [esp + 0x23]
push ecx
lea ecx, [esp + 0x2a8]
call fcn.0040ef00
cmp dword [esi + 0x50], edi
mov byte [esp + 0xe38], 4
jb 0x415ac7
mov eax, dword [esi + 0x3c]
jmp 0x415aca
lea eax, [esi + 0x3c]
push eax
lea ecx, [esp + 0x28]
call fcn.004049d0
push 0x46fa84
push 0x46fa80
lea ecx, [esp + 0x2c]
mov byte [esp + 0xe40], 5
call fcn.00403450
push 0x46fa3c
lea ecx, [esp + 0x34]
call fcn.004049d0
cmp dword [esi + 0x18], edi
mov byte [esp + 0xe38], 6
jb 0x415b0f
mov esi, dword [esi + 4]
jmp 0x415b12
add esi, 4
push esi
lea edx, [esp + 0x34]
push str.lib_id___s
push edx
call fcn.0042f210
add esp, 0xc
mov dword [esp + 0x2cc], ebx
mov dword [esp + 0x2d0], ebx
mov dword [esp + 0x2d4], ebx
mov dword [esp + 0x2d8], ebx
push 1
push 0x46fdb0
lea ecx, [esp + 0x5c]
mov byte [esp + 0xe40], 7
mov dword [esp + 0x74], 0xf
mov dword [esp + 0x70], ebx
mov byte [esp + 0x60], 0
call fcn.00403bf0
lea eax, [esp + 0x54]
push eax
lea ecx, [esp + 0x2cc]
mov byte [esp + 0xe3c], 8
call fcn.00405e90
cmp dword [esp + 0x6c], edi
mov byte [esp + 0xe38], 7
jb 0x415b9e
mov ecx, dword [esp + 0x58]
push ecx
call fcn.0045ce75
add esp, 4
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x68], esp
push ebx
mov ebp, 0xf
mov dword [ecx + 0x18], ebp
mov dword [ecx + 0x14], ebx
push 0x46fa3c
mov byte [ecx + 4], 0
call fcn.00403bf0
mov esi, dword [esp + 0x4c]
sub esp, 0x1c
mov ecx, esp
mov eax, esi
mov dword [ecx + 0x18], ebp
mov dword [ecx + 0x14], ebx
mov byte [esp + 0xe70], 9
mov dword [esp + 0x7c], esp
mov byte [ecx + 4], 0
lea edi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x415be5
sub eax, edi
push eax
push esi
call fcn.00403bf0
sub esp, 0x14
lea edx, [esp + 0x314]
mov ecx, esp
mov dword [esp + 0xbc], esp
push edx
mov byte [esp + 0xe88], 0xa
call fcn.004076a0
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0xdc], esp
push 7
mov dword [ecx + 0x18], ebp
mov dword [ecx + 0x14], ebx
push str.t_media
mov byte [esp + 0xea8], 0xb
mov byte [ecx + 4], 0
call fcn.00403bf0
mov esi, dword [esp + 0x88]
add esi, 0x1a4
mov ecx, esi
mov byte [esp + 0xea0], 7
call fcn.0042f430
test al, al
jne 0x415d0e
push 0x115
push str..GMUpdateDBThread.cpp
push 2
push 0x124fe
call fcn.004310d0
add esp, 0x10
lea ecx, [esp + 0x2c8]
call fcn.00404d60
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
mov byte [esp + 0xe38], 5
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x415caf
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0xe38], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x415cd5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
lea ecx, [esp + 0x2a0]
call fcn.0040ee40
cmp dword [esp + 0x29c], 0x10
jb 0x415cfb
mov eax, dword [esp + 0x288]
push eax
call fcn.0045ce75
add esp, 4
mov dword [esp + 0x29c], ebp
mov dword [esp + 0x298], ebx
jmp 0x417a64
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x28]
xor ebx, ebx
test eax, eax
mov dword [esp + 0x4c], eax
jle 0x416958
lea ecx, [esp + 0x314]
call fcn.0040c310
push 4
mov edi, 0xf
xor ebp, ebp
push str.guid
lea ecx, [esp + 0x120]
mov byte [esp + 0xe40], 0xc
mov dword [esp + 0x138], edi
mov dword [esp + 0x134], ebp
mov byte [esp + 0x124], 0
call fcn.00403bf0
mov edx, dword [esi]
lea eax, [esp + 0x118]
push eax
push ebx
lea ecx, [esp + 0x200]
push ecx
mov ecx, esi
mov byte [esp + 0xe44], 0xd
call dword [edx + 0x30]
push 0xffffffffffffffff
push ebp
push eax
lea ecx, [esp + 0x32c]
mov byte [esp + 0xe44], 0xe
call fcn.00403ac0
cmp dword [esp + 0x210], 0x10
jb 0x415db9
mov edx, dword [esp + 0x1fc]
push edx
call fcn.0045ce75
add esp, 4
cmp dword [esp + 0x130], 0x10
mov dword [esp + 0x210], edi
mov dword [esp + 0x20c], ebp
mov byte [esp + 0x1fc], 0
mov byte [esp + 0xe38], 0xc
jb 0x415df1
mov eax, dword [esp + 0x11c]
push eax
call fcn.0045ce75
add esp, 4
push 4
push str.path
lea ecx, [esp + 0xe8]
mov dword [esp + 0x138], edi
mov dword [esp + 0x134], ebp
mov byte [esp + 0x124], 0
mov dword [esp + 0x100], edi
mov dword [esp + 0xfc], ebp
mov byte [esp + 0xec], 0
call fcn.00403bf0
mov edx, dword [esi]
lea eax, [esp + 0xe0]
push eax
push ebx
lea ecx, [esp + 0x238]
push ecx
mov ecx, esi
mov byte [esp + 0xe44], 0xf
call dword [edx + 0x30]
cmp dword [eax + 0x18], 0x10
mov byte [esp + 0xe38], 0x10
jb 0x415e63
mov eax, dword [eax + 4]
jmp 0x415e66
add eax, 4
push eax
lea edx, [esp + 0x218]
push edx
call fcn.00430960
add esp, 8
push 0xffffffffffffffff
push ebp
push eax
lea ecx, [esp + 0x364]
mov byte [esp + 0xe44], 0x11
call fcn.00403ac0
cmp dword [esp + 0x22c], 0x10
jb 0x415ea9
mov eax, dword [esp + 0x218]
push eax
call fcn.0045ce75
add esp, 4
cmp dword [esp + 0x248], 0x10
mov dword [esp + 0x22c], edi
mov dword [esp + 0x228], ebp
mov byte [esp + 0x218], 0
jb 0x415ed9
mov ecx, dword [esp + 0x234]
push ecx
call fcn.0045ce75
add esp, 4
cmp dword [esp + 0xf8], 0x10
mov dword [esp + 0x248], edi
mov dword [esp + 0x244], ebp
mov byte [esp + 0x234], 0
mov byte [esp + 0xe38], 0xc
jb 0x415f11
mov edx, dword [esp + 0xe4]
push edx
call fcn.0045ce75
add esp, 4
push 0xa
push str.createtime
lea ecx, [esp + 0x158]
mov dword [esp + 0x100], edi
mov dword [esp + 0xfc], ebp
mov byte [esp + 0xec], 0
mov dword [esp + 0x170], edi
mov dword [esp + 0x16c], ebp
mov byte [esp + 0x15c], 0
call fcn.00403bf0
mov eax, dword [esi]
lea ecx, [esp + 0x150]
push ecx
push ebx
lea edx, [esp + 0x1c8]
push edx
mov ecx, esi
mov byte [esp + 0xe44], 0x12
call dword [eax + 0x30]
push 0xffffffffffffffff
push ebp
push eax
lea ecx, [esp + 0x3d4]
mov byte [esp + 0xe44], 0x13
call fcn.00403ac0
cmp dword [esp + 0x1d8], 0x10
jb 0x415fa2
mov eax, dword [esp + 0x1c4]
push eax
call fcn.0045ce75
add esp, 4
cmp dword [esp + 0x168], 0x10
mov dword [esp + 0x1d8], edi
mov dword [esp + 0x1d4], ebp
mov byte [esp + 0x1c4], 0
mov byte [esp + 0xe38], 0xc
jb 0x415fda
mov ecx, dword [esp + 0x154]
push ecx
call fcn.0045ce75
add esp, 4
push 4
push str.live
lea ecx, [esp + 0x104]
mov dword [esp + 0x170], edi
mov dword [esp + 0x16c], ebp
mov byte [esp + 0x15c], 0
mov dword [esp + 0x11c], edi
mov dword [esp + 0x118], ebp
mov byte [esp + 0x108], 0
call fcn.00403bf0
mov edx, dword [esi]
lea eax, [esp + 0xfc]
push eax
push ebx
lea ecx, [esp + 0x1e4]
push ecx
mov ecx, esi
mov byte [esp + 0xe44], 0x14
call dword [edx + 0x30]
cmp dword [eax + 0x18], 0x10
jb 0x416044
mov eax, dword [eax + 4]
jmp 0x416047
add eax, 4
push eax
call fcn.004471d5
mov dword [esp + 0x320], eax
mov eax, dword [esp + 0x1f8]
add esp, 4
cmp eax, 0x10
jb 0x416073
mov edx, dword [esp + 0x1e0]
push edx
call fcn.0045ce75
add esp, 4
cmp dword [esp + 0x114], 0x10
mov dword [esp + 0x1f4], edi
mov dword [esp + 0x1f0], ebp
mov byte [esp + 0x1e0], 0
mov byte [esp + 0xe38], 0xc
jb 0x4160ab
mov eax, dword [esp + 0x100]
push eax
call fcn.0045ce75
add esp, 4
push 4
push str.snap
lea ecx, [esp + 0x13c]
mov dword [esp + 0x11c], edi
mov dword [esp + 0x118], ebp
mov byte [esp + 0x108], 0
mov dword [esp + 0x154], edi
mov dword [esp + 0x150], ebp
mov byte [esp + 0x140], 0
call fcn.00403bf0
mov edx, dword [esi]
lea eax, [esp + 0x134]
push eax
push ebx
lea ecx, [esp + 0x190]
push ecx
mov ecx, esi
mov byte [esp + 0xe44], 0x15
call dword [edx + 0x30]
cmp dword [eax + 0x18], 0x10
jb 0x416115
mov eax, dword [eax + 4]
jmp 0x416118
add eax, 4
push eax
call fcn.004471d5
mov dword [esp + 0x4b0], eax
mov eax, dword [esp + 0x1a4]
add esp, 4
cmp eax, 0x10
jb 0x416144
mov edx, dword [esp + 0x18c]
push edx
call fcn.0045ce75
add esp, 4
cmp dword [esp + 0x14c], 0x10
mov dword [esp + 0x1a0], edi
mov dword [esp + 0x19c], ebp
mov byte [esp + 0x18c], 0
mov byte [esp + 0xe38], 0xc
jb 0x41617c
mov eax, dword [esp + 0x138]
push eax
call fcn.0045ce75
add esp, 4
push 7
push str.encoder
lea ecx, [esp + 0x174]
mov dword [esp + 0x154], edi
mov dword [esp + 0x150], ebp
mov byte [esp + 0x140], 0
mov dword [esp + 0x18c], edi
mov dword [esp + 0x188], ebp
mov byte [esp + 0x178], 0
call fcn.00403bf0
mov edx, dword [esi]
lea eax, [esp + 0x16c]
push eax
push ebx
lea ecx, [esp + 0x254]
push ecx
mov ecx, esi
mov byte [esp + 0xe44], 0x16
call dword [edx + 0x30]
push 0xffffffffffffffff
push ebp
push eax
lea ecx, [esp + 0x460]
mov byte [esp + 0xe44], 0x17
call fcn.00403ac0
cmp dword [esp + 0x264], 0x10
jb 0x41620d
mov edx, dword [esp + 0x250]
push edx
call fcn.0045ce75
add esp, 4
cmp dword [esp + 0x184], 0x10
mov dword [esp + 0x264], edi
mov dword [esp + 0x260], ebp
mov byte [esp + 0x250], 0
mov byte [esp + 0xe38], 0xc
jb 0x416245
mov eax, dword [esp + 0x170]
push eax
call fcn.0045ce75
add esp, 4
push 8
push str.duration
lea ecx, [esp + 0x80]
mov dword [esp + 0x18c], edi
mov dword [esp + 0x188], ebp
mov byte [esp + 0x178], 0
mov dword [esp + 0x98], edi
mov dword [esp + 0x94], ebp
mov byte [esp + 0x84], 0
call fcn.00403bf0
mov edx, dword [esi]
lea eax, [esp + 0x78]
push eax
push ebx
lea ecx, [esp + 0x270]
push ecx
mov ecx, esi
mov byte [esp + 0xe44], 0x18
call dword [edx + 0x30]
push 0xffffffffffffffff
push ebp
push eax
lea ecx, [esp + 0x3b8]
mov byte [esp + 0xe44], 0x19
call fcn.00403ac0
cmp dword [esp + 0x280], 0x10
jb 0x4162d3
mov edx, dword [esp + 0x26c]
push edx
call fcn.0045ce75
add esp, 4
cmp dword [esp + 0x90], 0x10
mov dword [esp + 0x280], edi
mov dword [esp + 0x27c], ebp
mov byte [esp + 0x26c], 0
mov byte [esp + 0xe38], 0xc
jb 0x416308
mov eax, dword [esp + 0x7c]
push eax
call fcn.0045ce75
add esp, 4
cmp dword [esp + 0x3c4], 0x10
mov eax, dword [esp + 0x3b0]
mov dword [esp + 0x90], edi
mov dword [esp + 0x8c], ebp
mov byte [esp + 0x7c], 0
jae 0x416333
lea eax, [esp + 0x3b0]
push eax
call fcn.004471da
add esp, 4
push str._H:_M:_S
lea ecx, [esp + 0x4c]
push ecx
lea ecx, [esp + 0xe0]
mov dword [esp + 0xe0], eax
mov dword [esp + 0xe4], edx
call fcn.0040b900
mov ecx, dword [eax]
mov eax, ecx
mov byte [esp + 0xe38], 0x1a
lea edi, [eax + 1]
nop
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x416370
sub eax, edi
push eax
push ecx
lea ecx, [esp + 0x3b4]
call fcn.00403bf0
mov eax, dword [esp + 0x48]
add eax, 0xfffffff0
mov byte [esp + 0xe38], 0xc
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4163ad
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
push 4
mov edi, 0xf
push str.kbps
lea ecx, [esp + 0x9c]
mov dword [esp + 0xb4], edi
mov dword [esp + 0xb0], ebp
mov byte [esp + 0xa0], 0
call fcn.00403bf0
mov eax, dword [esi]
lea ecx, [esp + 0x94]
push ecx
push ebx
lea edx, [esp + 0x1ac]
push edx
mov ecx, esi
mov byte [esp + 0xe44], 0x1b
call dword [eax + 0x30]
push 0xffffffffffffffff
push ebp
push eax
lea ecx, [esp + 0x444]
mov byte [esp + 0xe44], 0x1c
call fcn.00403ac0
cmp dword [esp + 0x1bc], 0x10
jb 0x41642d
mov eax, dword [esp + 0x1a8]
push eax
call fcn.0045ce75
add esp, 4
cmp dword [esp + 0xac], 0x10
mov dword [esp + 0x1bc], edi
mov dword [esp + 0x1b8], ebp
mov byte [esp + 0x1a8], 0
mov byte [esp + 0xe38], 0xc
jb 0x416465
mov ecx, dword [esp + 0x98]
push ecx
call fcn.0045ce75
add esp, 4
push 9
push str.imagesize
lea ecx, [esp + 0x5c]
mov dword [esp + 0xb4], edi
mov dword [esp + 0xb0], ebp
mov byte [esp + 0xa0], 0
mov dword [esp + 0x74], edi
mov dword [esp + 0x70], ebp
mov byte [esp + 0x60], 0
call fcn.00403bf0
mov edx, dword [esi]
lea eax, [esp + 0x54]
push eax
push ebx
lea ecx, [esp + 0xb8]
push ecx
mov ecx, esi
mov byte [esp + 0xe44], 0x1d
call dword [edx + 0x30]
cmp dword [eax + 0x18], 0x10
mov byte [esp + 0xe38], 0x1e
jb 0x4164c8
mov eax, dword [eax + 4]
jmp 0x4164cb
add eax, 4
push eax
lea ecx, [esp + 0x1c]
call fcn.004049d0
cmp dword [esp + 0xc8], 0x10
jb 0x4164ef
mov edx, dword [esp + 0xb4]
push edx
call fcn.0045ce75
add esp, 4
cmp dword [esp + 0x6c], 0x10
mov dword [esp + 0xc8], edi
mov dword [esp + 0xc4], ebp
mov byte [esp + 0xb4], 0
mov byte [esp + 0xe38], 0x20
jb 0x416521
mov eax, dword [esp + 0x58]
push eax
call fcn.0045ce75
add esp, 4
mov eax, dword [esp + 0x18]
cmp dword [eax - 0xc], ebp
mov dword [esp + 0x6c], edi
mov dword [esp + 0x68], ebp
mov byte [esp + 0x58], 0
jg 0x41653c
or ebp, 0xffffffff
jmp 0x416556
push 0x58
push eax
call fcn.0044762a
add esp, 8
cmp eax, ebp
jne 0x416550
or ebp, 0xffffffff
jmp 0x416556
sub eax, dword [esp + 0x18]
mov ebp, eax
push ebp
lea ecx, [esp + 0x44]
push ecx
lea ecx, [esp + 0x20]
call fcn.0040b140
mov ecx, dword [eax]
mov eax, ecx
mov byte [esp + 0xe38], 0x22
lea edi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x416574
sub eax, edi
push eax
push ecx
lea ecx, [esp + 0x408]
call fcn.00403bf0
mov eax, dword [esp + 0x40]
add eax, 0xfffffff0
mov byte [esp + 0xe38], 0x20
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4165b1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x18]
mov eax, dword [eax - 0xc]
sub eax, ebp
dec eax
push eax
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x20]
call fcn.00409dc0
mov ecx, dword [eax]
mov eax, ecx
mov byte [esp + 0xe38], 0x23
lea edi, [eax + 1]
lea esp, [esp]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4165e0
sub eax, edi
push eax
push ecx
lea ecx, [esp + 0x424]
call fcn.00403bf0
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
mov byte [esp + 0xe38], 0x20
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x41661d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x48], esp
push 0xffffffffffffffff
xor ebp, ebp
push ebp
lea eax, [esp + 0x37c]
mov dword [ecx + 0x18], 0xf
mov dword [ecx + 0x14], ebp
push eax
mov byte [ecx + 4], 0
call fcn.00403ac0
lea ecx, [esp + 0x314]
push ecx
call fcn.0040d1f0
add esp, 0x20
cmp dword [esp + 0x310], 0x10
mov eax, dword [esp + 0x2fc]
mov byte [esp + 0xe38], 0x24
jae 0x416676
lea eax, [esp + 0x2fc]
push eax
call fcn.00457d37
mov eax, dword [esp + 0x24]
mov edi, dword [eax + 0x94]
add esp, 4
lea edx, [esp + 0x2f8]
push edx
lea ecx, [esp + 0x78]
push ecx
lea ecx, [eax + 0x8c]
call fcn.0040b650
cmp dword [esp + 0x74], edi
setne dl
movzx eax, dl
mov dword [esp + 0x4a8], eax
cmp dword [esp + 0x3c], ebp
je 0x4167ca
cmp dword [esp + 0x370], 0x10
mov ecx, dword [esp + 0x35c]
jae 0x4166d4
lea ecx, [esp + 0x35c]
mov edx, dword [esp + 0x24]
mov eax, dword [edx - 0xc]
lea eax, [eax + ecx + 1]
push eax
lea ecx, [esp + 0x14]
call fcn.004049d0
mov eax, dword [esp + 0x10]
cmp dword [eax - 0xc], ebp
mov byte [esp + 0xe38], 0x25
jg 0x4166ff
or edi, 0xffffffff
jmp 0x416719
push 0x5c
push eax
call fcn.0044762a
add esp, 8
cmp eax, ebp
jne 0x416713
or edi, 0xffffffff
jmp 0x416719
sub eax, dword [esp + 0x10]
mov edi, eax
mov eax, dword [esp + 0x10]
cmp dword [eax - 0xc], ebp
jg 0x416727
or eax, 0xffffffff
jmp 0x41673f
push 0x2f
push eax
call fcn.0044762a
add esp, 8
cmp eax, ebp
jne 0x41673b
or eax, 0xffffffff
jmp 0x41673f
sub eax, dword [esp + 0x10]
cmp edi, eax
jg 0x416745
mov edi, eax
cmp edi, ebp
jle 0x4167a4
push edi
lea ecx, [esp + 0x74]
push ecx
lea ecx, [esp + 0x18]
call fcn.0040b140
mov ecx, dword [eax]
mov eax, ecx
mov byte [esp + 0xe38], 0x26
lea edi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x416767
sub eax, edi
push eax
push ecx
lea ecx, [esp + 0x494]
call fcn.00403bf0
mov eax, dword [esp + 0x70]
add eax, 0xfffffff0
mov byte [esp + 0xe38], 0x25
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4167a4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
mov byte [esp + 0xe38], 0x24
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4167ca
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
cmp dword [esp + 0x370], 0x10
mov eax, dword [esp + 0x35c]
jae 0x4167e2
lea eax, [esp + 0x35c]
push eax
call fcn.00457d37
mov ecx, eax
add esp, 4
mov dword [esp + 0x2f4], 0xf
mov dword [esp + 0x2f0], ebp
mov byte [esp + 0x2e0], 0
lea edi, [ecx + 1]
lea ebx, [ebx]
mov dl, byte [ecx]
inc ecx
test dl, dl
jne 0x416810
sub ecx, edi
push ecx
push eax
lea ecx, [esp + 0x2e4]
call fcn.00403bf0
mov ebp, dword [esp + 0x20]
mov edi, dword [ebp + 0x6c]
lea eax, [esp + 0x320]
push eax
lea ecx, [esp + 0x48]
push ecx
add ebp, 0x64
mov ecx, ebp
mov byte [esp + 0xe40], 0x27
call fcn.0040b650
cmp dword [esp + 0x44], edi
jne 0x41689b
lea edx, [esp + 0x320]
push edx
mov ecx, ebp
call fcn.0040fc10
push 0xffffffffffffffff
xor ebp, ebp
push ebp
lea ecx, [esp + 0x2e4]
push ecx
mov ecx, eax
call fcn.00403ac0
lea edx, [esp + 0x314]
push edx
lea eax, [esp + 0x2e0]
push eax
lea ecx, [esp + 0x2a8]
call fcn.00410b40
mov ecx, eax
call fcn.0040c6c0
jmp 0x41689d
xor ebp, ebp
mov ecx, dword [esp + 0x20]
cmp dword [ecx + 4], ebp
mov eax, dword [esp + 0x2f4]
jne 0x416a11
cmp eax, 0x10
jb 0x4168c6
mov edx, dword [esp + 0x2e0]
push edx
call fcn.0045ce75
add esp, 4
cmp dword [esp + 0x310], 0x10
mov edi, 0xf
mov dword [esp + 0x2f4], edi
mov dword [esp + 0x2f0], ebp
mov byte [esp + 0x2e0], 0
jb 0x4168fb
mov eax, dword [esp + 0x2fc]
push eax
call fcn.0045ce75
add esp, 4
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
mov dword [esp + 0x310], edi
mov dword [esp + 0x30c], ebp
mov byte [esp + 0x2fc], 0
mov byte [esp + 0xe38], 0xc
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x416937
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
lea ecx, [esp + 0x314]
mov byte [esp + 0xe38], 7
call fcn.0040add0
mov eax, dword [esp + 0x4c]
inc ebx
cmp ebx, eax
jl 0x415d23
mov eax, dword [esp + 0x50]
test eax, eax
mov eax, dword [esp + 0x2a8]
mov esi, dword [eax]
jne 0x4178c2
push 0x46fa3c
lea ecx, [esp + 0x18]
call fcn.004049d0
push 0x46fa3c
lea ecx, [esp + 0x14]
mov byte [esp + 0xe3c], 0x28
call fcn.004049d0
push 0x46fa3c
lea ecx, [esp + 0x1c]
mov byte [esp + 0xe3c], 0x29
call fcn.004049d0
cmp esi, dword [esp + 0x2a8]
mov byte [esp + 0xe38], 0x2a
je 0x41744f
mov ebp, dword [esp + 0x3c]
mov ebx, dword [esp + 0x20]
mov eax, dword [ebx + 4]
test eax, eax
jne 0x4175ed
mov eax, dword [esi + 0x2c]
test eax, eax
jle 0x416b36
lea ecx, [esi + 0x24]
push ecx
lea edx, [esi + 0x68]
push edx
lea ecx, [ebx + 0x14]
call fcn.00410b40
mov ecx, eax
call fcn.0040c6c0
push esi
lea eax, [esp + 0x30]
push eax
lea ecx, [esp + 0x2a8]
call fcn.0040e730
mov ecx, dword [esp + 0x2a8]
mov esi, dword [ecx]
jmp 0x417442
mov edi, 0x10
cmp eax, edi
jb 0x416a2a
mov eax, dword [esp + 0x2e0]
push eax
call fcn.0045ce75
add esp, 4
cmp dword [esp + 0x310], edi
mov esi, 0xf
mov dword [esp + 0x2f4], esi
mov dword [esp + 0x2f0], ebp
mov byte [esp + 0x2e0], 0
jb 0x416a5e
mov ecx, dword [esp + 0x2fc]
push ecx
call fcn.0045ce75
add esp, 4
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
mov dword [esp + 0x310], esi
mov dword [esp + 0x30c], ebp
mov byte [esp + 0x2fc], 0
mov byte [esp + 0xe38], 0xc
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x416a9a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
lea ecx, [esp + 0x314]
call fcn.0040add0
lea ecx, [esp + 0x2c8]
call fcn.00404d60
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
mov byte [esp + 0xe38], 5
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x416ad8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0xe38], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x416afe
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
lea ecx, [esp + 0x2a0]
call fcn.0040ee40
cmp dword [esp + 0x29c], edi
jb 0x416b23
mov eax, dword [esp + 0x288]
push eax
call fcn.0045ce75
add esp, 4
mov dword [esp + 0x29c], esi
mov dword [esp + 0x298], ebp
jmp 0x417a64
cmp dword [esi + 0x80], 0x10
jb 0x416b44
mov eax, dword [esi + 0x6c]
jmp 0x416b47
lea eax, [esi + 0x6c]
push eax
lea ecx, [esp + 0x44]
call fcn.004049d0
lea edx, [esp + 0x40]
push 1
push edx
mov byte [esp + 0xe40], 0x2b
call fcn.00409e20
mov edi, eax
mov eax, dword [esp + 0x48]
add eax, 0xfffffff0
add esp, 8
mov byte [esp + 0xe38], 0x2a
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x416b90
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
cmp edi, 1
je 0x41736e
cmp edi, 2
je 0x41736e
cmp edi, 4
je 0x41736e
lea eax, [esi + 0x24]
push eax
lea ecx, [esp + 0x8f0]
call fcn.0040bbc0
cmp dword [esp + 0x948], 0x10
mov eax, dword [esp + 0x934]
mov byte [esp + 0xe38], 0x2e
jae 0x416bdb
lea eax, [esp + 0x934]
push eax
lea ecx, [esp + 0x18]
call fcn.004040c0
mov ecx, dword [esp + 0x14]
push 0x2f
push ecx
call fcn.004476a5
mov ecx, dword [esp + 0x1c]
add esp, 8
test eax, eax
jne 0x416c01
or edi, 0xffffffff
jmp 0x416c05
sub eax, ecx
mov edi, eax
push 0x5c
push ecx
call fcn.004476a5
add esp, 8
test eax, eax
jne 0x416c19
or eax, 0xffffffff
jmp 0x416c1d
sub eax, dword [esp + 0x14]
cmp edi, eax
jg 0x416c23
mov edi, eax
push edi
lea edx, [esp + 0x54]
push edx
lea ecx, [esp + 0x1c]
call fcn.0040b140
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0xe3c], 0x2f
call fcn.0040b590
mov eax, dword [esp + 0x50]
add eax, 0xfffffff0
mov byte [esp + 0xe38], 0x2e
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x416c6a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
lea eax, [esp + 0x1f]
push eax
lea ecx, [esp + 0x23]
push ecx
lea ecx, [esp + 0xb8]
call fcn.0040ef00
lea edx, [esp + 0x8ec]
push edx
lea eax, [esp + 0x934]
push eax
lea ecx, [esp + 0xb8]
mov byte [esp + 0xe40], 0x30
call fcn.00410b40
mov ecx, eax
call fcn.0040c6c0
push esi
lea ecx, [esp + 0x30]
push ecx
lea ecx, [esp + 0x2a8]
call fcn.0040e730
mov eax, dword [esp + 0x2a8]
mov edi, dword [eax]
cmp edi, eax
je 0x4171bf
mov edi, edi
mov eax, dword [ebx + 4]
test eax, eax
jne 0x417723
lea esi, [edi + 0x24]
push esi
lea ecx, [esp + 0x5b8]
call fcn.0040bbc0
mov eax, dword [edi + 0x2c]
test eax, eax
mov byte [esp + 0xe38], 0x31
jle 0x416d29
push esi
lea edx, [edi + 0x68]
push edx
lea ecx, [ebx + 0x14]
call fcn.00410b40
mov ecx, eax
call fcn.0040c6c0
mov eax, edi
mov edi, dword [edi]
push eax
lea eax, [esp + 0x30]
push eax
lea ecx, [esp + 0x2a8]
call fcn.0040e730
jmp 0x41719c
cmp dword [edi + 0x80], 0x10
jb 0x416d37
mov eax, dword [edi + 0x6c]
jmp 0x416d3a
lea eax, [edi + 0x6c]
push eax
lea ecx, [esp + 0x4c]
call fcn.004049d0
lea ecx, [esp + 0x48]
push 1
push ecx
mov byte [esp + 0xe40], 0x32
call fcn.00409e20
mov esi, eax
mov eax, dword [esp + 0x50]
add eax, 0xfffffff0
add esp, 8
mov byte [esp + 0xe38], 0x31
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x416d83
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
cmp esi, 1
je 0x4170f9
cmp esi, 2
je 0x4170f9
cmp esi, 4
je 0x4170f9
cmp dword [esp + 0x610], 0x10
mov eax, dword [esp + 0x5fc]
jae 0x416db6
lea eax, [esp + 0x5fc]
push eax
lea ecx, [esp + 0x18]
call fcn.004040c0
push 0x2f
lea ecx, [esp + 0x18]
call fcn.0040a5f0
push 0x5c
lea ecx, [esp + 0x18]
mov esi, eax
call fcn.0040a5f0
cmp esi, eax
jg 0x416dde
mov esi, eax
push esi
lea eax, [esp + 0x50]
push eax
lea ecx, [esp + 0x1c]
call fcn.0040b140
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0xe3c], 0x34
call fcn.0040b590
mov eax, dword [esp + 0x4c]
add eax, 0xfffffff0
mov byte [esp + 0xe38], 0x31
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x416e25
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x10]
mov esi, dword [ecx - 0xc]
mov eax, dword [edx - 0xc]
cmp esi, eax
jl 0x416e39
mov esi, eax
test esi, esi
jl 0x417841
cmp esi, eax
jg 0x417841
push edx
push ecx
call fcn.00447710
add esp, 8
test eax, eax
jne 0x416e95
lea eax, [esp + 0x5b4]
push eax
lea ecx, [esp + 0x5fc]
push ecx
lea ecx, [esp + 0xb8]
call fcn.00410b40
mov ecx, eax
call fcn.0040c6c0
mov eax, edi
mov edi, dword [edi]
push eax
lea edx, [esp + 0x30]
push edx
lea ecx, [esp + 0x2a8]
call fcn.0040e730
jmp 0x41719c
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx - 0xc]
mov eax, dword [esp + 0x10]
cmp edx, dword [eax - 0xc]
jge 0x416f7b
push ecx
push eax
call fcn.00447da0
add esp, 8
test eax, eax
je 0x416f73
push esi
lea ecx, [esp + 0x14]
call fcn.0040a760
cmp al, 0x2f
je 0x416edb
push esi
lea ecx, [esp + 0x14]
call fcn.0040a760
cmp al, 0x5c
jne 0x416f73
lea ecx, [esp + 0x750]
call fcn.0040c4c0
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x38]
lea edx, [esp + 0x750]
mov dword [esp + 0x78c], eax
push edx
lea eax, [esp + 0x5b8]
mov dword [esp + 0x828], ecx
push eax
mov ecx, ebx
mov byte [esp + 0xe40], 0x35
mov dword [esp + 0x830], ebp
call fcn.00411c60
lea ecx, [esp + 0x5b4]
push ecx
lea edx, [esp + 0x5fc]
push edx
lea ecx, [ebx + 0x14]
call fcn.00410b40
mov ecx, eax
call fcn.0040c6c0
lea eax, [esp + 0x750]
push eax
mov ecx, ebx
call fcn.00411400
mov eax, edi
mov edi, dword [edi]
push eax
lea ecx, [esp + 0x30]
push ecx
lea ecx, [esp + 0x2a8]
call fcn.0040e730
lea ecx, [esp + 0x750]
jmp 0x417197
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x18]
mov edx, dword [eax - 0xc]
cmp edx, dword [ecx - 0xc]
jge 0x4170f2
push eax
push ecx
call fcn.00447da0
add esp, 8
test eax, eax
je 0x4170f2
push esi
lea ecx, [esp + 0x1c]
call fcn.0040a760
cmp al, 0x2f
je 0x416fb9
push esi
lea ecx, [esp + 0x1c]
call fcn.0040a760
cmp al, 0x5c
jne 0x4170f2
mov eax, dword [esp + 0xb8]
mov esi, dword [eax]
cmp esi, eax
je 0x417076
mov ebx, dword [esp + 0x20]
add ebx, 0x14
lea ecx, [esp + 0x314]
call fcn.0040c4c0
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x38]
mov dword [esp + 0x350], edx
lea edx, [esp + 0x314]
push edx
mov dword [esp + 0x3f0], ecx
mov ecx, dword [esp + 0x24]
lea ebp, [esi + 0x24]
push ebp
mov byte [esp + 0xe40], 0x36
mov dword [esp + 0x3f0], eax
call fcn.00411c60
push ebp
lea eax, [esi + 0x68]
push eax
mov ecx, ebx
call fcn.00410b40
mov ecx, eax
call fcn.0040c6c0
lea ecx, [esp + 0x314]
push ecx
mov ecx, dword [esp + 0x24]
call fcn.00411400
mov eax, esi
mov esi, dword [esi]
push eax
lea edx, [esp + 0x30]
push edx
lea ecx, [esp + 0xb8]
call fcn.0040e730
lea ecx, [esp + 0x314]
mov byte [esp + 0xe38], 0x31
call fcn.0040aff0
cmp esi, dword [esp + 0xb8]
jne 0x416fd1
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x14]
call fcn.0040b800
lea ecx, [esp + 0x5b4]
push ecx
lea edx, [esp + 0x5fc]
push edx
lea ecx, [esp + 0xb8]
call fcn.00410b40
mov ecx, eax
call fcn.0040c6c0
lea eax, [esp + 0x5b4]
push eax
lea ecx, [esp + 0x8f0]
call fcn.0040c6c0
mov eax, edi
mov edi, dword [edi]
push eax
lea ecx, [esp + 0x30]
push ecx
lea ecx, [esp + 0x2a8]
call fcn.0040e730
lea ecx, [esp + 0x5b4]
mov byte [esp + 0xe38], 0x30
call fcn.0040add0
mov ebp, dword [esp + 0x3c]
mov ebx, dword [esp + 0x20]
jmp 0x4171b0
mov edi, dword [edi]
jmp 0x41719c
lea ecx, [esp + 0xb8c]
call fcn.0040c4c0
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x38]
lea ecx, [esp + 0xb8c]
mov dword [esp + 0xbc8], edx
push ecx
lea edx, [esp + 0x5b8]
push edx
mov ecx, ebx
mov byte [esp + 0xe40], 0x33
mov dword [esp + 0xc68], eax
mov dword [esp + 0xc6c], ebp
mov dword [esp + 0xc64], 1
call fcn.00411c60
lea eax, [esp + 0x5b4]
push eax
lea ecx, [esp + 0x5fc]
push ecx
lea ecx, [ebx + 0x14]
call fcn.00410b40
mov ecx, eax
call fcn.0040c6c0
lea edx, [esp + 0xb8c]
push edx
mov ecx, ebx
call fcn.00411400
mov eax, edi
mov edi, dword [edi]
push eax
lea eax, [esp + 0x30]
push eax
lea ecx, [esp + 0x2a8]
call fcn.0040e730
lea ecx, [esp + 0xb8c]
call fcn.0040aff0
lea ecx, [esp + 0x5b4]
mov byte [esp + 0xe38], 0x30
call fcn.0040add0
mov eax, dword [esp + 0x2a8]
cmp edi, eax
jne 0x416cd0
mov ecx, dword [esp + 0xb8]
mov edi, dword [ecx]
cmp edi, ecx
je 0x417347
mov eax, dword [ebx + 4]
test eax, eax
jne 0x41784b
lea ecx, [esp + 0xa88]
call fcn.0040c4c0
cmp dword [esp + 0x948], 0x10
mov eax, dword [esp + 0x934]
mov byte [esp + 0xe38], 0x37
jae 0x417207
lea eax, [esp + 0x934]
push eax
lea ecx, [esp + 0x18]
call fcn.004040c0
mov ecx, dword [esp + 0x14]
push 0x2f
push ecx
call fcn.004476a5
mov ecx, dword [esp + 0x1c]
add esp, 8
test eax, eax
jne 0x41722d
or esi, 0xffffffff
jmp 0x417231
sub eax, ecx
mov esi, eax
push 0x5c
push ecx
call fcn.004476a5
add esp, 8
test eax, eax
jne 0x417245
or eax, 0xffffffff
jmp 0x417249
sub eax, dword [esp + 0x14]
cmp esi, eax
jg 0x41724f
mov esi, eax
push esi
lea edx, [esp + 0x48]
push edx
lea ecx, [esp + 0x1c]
call fcn.0040b140
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0xe3c], 0x38
call fcn.0040b590
mov eax, dword [esp + 0x44]
add eax, 0xfffffff0
mov byte [esp + 0xe38], 0x37
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x417296
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x24]
mov dword [esp + 0xb5c], ecx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0xac4], eax
mov dword [esp + 0xb60], ebp
mov eax, dword [edx - 0xc]
cmp eax, dword [ecx - 0xc]
mov ecx, ebx
lea esi, [edi + 0x24]
jge 0x4172d8
lea edx, [esp + 0xa88]
push edx
push esi
call fcn.00412120
jmp 0x4172e6
lea eax, [esp + 0xa88]
push eax
push esi
call fcn.00411c60
push esi
lea ecx, [edi + 0x68]
push ecx
lea ecx, [ebx + 0x14]
call fcn.00410b40
mov ecx, eax
call fcn.0040c6c0
lea edx, [esp + 0xa88]
push edx
mov ecx, ebx
call fcn.00411400
mov eax, edi
mov edi, dword [edi]
push eax
lea eax, [esp + 0x30]
push eax
lea ecx, [esp + 0xb8]
call fcn.0040e730
lea ecx, [esp + 0xa88]
mov byte [esp + 0xe38], 0x30
call fcn.0040aff0
cmp edi, dword [esp + 0xb8]
jne 0x4171d0
mov eax, dword [esp + 0x2a8]
mov esi, dword [eax]
lea ecx, [esp + 0xb0]
call fcn.0040ee40
lea ecx, [esp + 0x8ec]
mov byte [esp + 0xe38], 0x2a
call fcn.0040add0
jmp 0x417442
lea ecx, [esp + 0x4b0]
call fcn.0040c4c0
lea ecx, [esi + 0x24]
push ecx
lea ecx, [esp + 0xc94]
mov byte [esp + 0xe3c], 0x2c
call fcn.0040bbc0
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x38]
lea ecx, [esp + 0x4b0]
mov dword [esp + 0x4ec], edx
push ecx
lea edx, [esp + 0xc94]
push edx
mov ecx, ebx
mov byte [esp + 0xe40], 0x2d
mov dword [esp + 0x58c], eax
mov dword [esp + 0x590], ebp
mov dword [esp + 0x588], 1
call fcn.00411c60
lea eax, [esp + 0xc90]
push eax
lea ecx, [esp + 0xcd8]
push ecx
lea ecx, [ebx + 0x14]
call fcn.00410b40
mov ecx, eax
call fcn.0040c6c0
lea edx, [esp + 0x4b0]
push edx
mov ecx, ebx
call fcn.00411400
push esi
lea eax, [esp + 0x30]
push eax
lea ecx, [esp + 0x2a8]
call fcn.0040e730
mov ecx, dword [esp + 0x2a8]
mov esi, dword [ecx]
lea ecx, [esp + 0xc90]
call fcn.0040add0
lea ecx, [esp + 0x4b0]
mov byte [esp + 0xe38], 0x2a
call fcn.0040aff0
cmp esi, dword [esp + 0x2a8]
jne 0x4169c4
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
mov byte [esp + 0xe38], 0x29
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x417475
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
mov byte [esp + 0xe38], 0x28
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x41749b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
mov byte [esp + 0xe38], 7
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4174c1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
lea ecx, [esp + 0x2c8]
call fcn.00404d60
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
mov byte [esp + 0xe38], 5
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4174f3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0xe38], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x417519
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x2b4]
xor esi, esi
cmp eax, esi
je 0x41752f
push eax
call fcn.0045ce75
add esp, 4
lea ecx, [esp + 0x2a4]
mov dword [esp + 0x2b4], esi
mov dword [esp + 0x2b8], esi
mov dword [esp + 0x2bc], esi
call fcn.0040dd80
mov eax, dword [esp + 0x2a8]
push eax
call fcn.0045ce75
mov eax, dword [esp + 0x2a0]
add esp, 4
cmp eax, 0x10
mov dword [esp + 0x2a8], esi
jb 0x417583
mov ecx, dword [esp + 0x288]
push ecx
call fcn.0045ce75
add esp, 4
mov dword [esp + 0x298], esi
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
mov dword [esp + 0x29c], 0xf
mov byte [esp + 0x288], 0
mov dword [esp + 0xe38], 0xffffffff
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4175c6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov ecx, dword [esp + 0xe30]
mov dword fs:[0], ecx
mov ecx, dword [esp + 0xe2c]
call fcn.00446654
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xe2c
ret 4
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
mov byte [esp + 0xe38], 0x29
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x417613
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
mov byte [esp + 0xe38], 0x28
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x417639
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
mov byte [esp + 0xe38], 7
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x41765f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
lea ecx, [esp + 0x2c8]
call fcn.00404d60
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
mov byte [esp + 0xe38], 5
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x417691
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0xe38], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4176b7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
lea ecx, [esp + 0x2a0]
call fcn.0040ee40
cmp dword [esp + 0x29c], 0x10
jb 0x417a4e
mov eax, dword [esp + 0x288]
push eax
call fcn.0045ce75
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
add esp, 4
mov dword [esp + 0x29c], 0xf
mov dword [esp + 0x298], 0
mov byte [esp + 0x288], 0
mov dword [esp + 0xe38], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jmp 0x4175bc
lea ecx, [esp + 0xb0]
call fcn.0040ee40
lea ecx, [esp + 0x8ec]
call fcn.0040add0
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
mov byte [esp + 0xe38], 0x29
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x417761
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
mov byte [esp + 0xe38], 0x28
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x417787
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
mov byte [esp + 0xe38], 7
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4177ad
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
lea ecx, [esp + 0x2c8]
call fcn.00404d60
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
mov byte [esp + 0xe38], 5
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4177df
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0xe38], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x417805
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
lea ecx, [esp + 0x2a0]
call fcn.0040ee40
lea ecx, [esp + 0x284]
call fcn.00427370
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
mov dword [esp + 0xe38], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jmp 0x4175bc
push 0x80070057
call fcn.00401210
lea ecx, [esp + 0xb0]
call fcn.0040ee40
lea ecx, [esp + 0x8ec]
call fcn.0040add0
lea ecx, [esp + 0x18]
call fcn.0042f1f0
lea ecx, [esp + 0x10]
call fcn.0042f1f0
lea ecx, [esp + 0x14]
call fcn.0042f1f0
lea ecx, [esp + 0x2c8]
call fcn.00404d60
lea ecx, [esp + 0x30]
call fcn.0042f1f0
lea ecx, [esp + 0x24]
call fcn.0042f1f0
lea ecx, [esp + 0x2a0]
call fcn.0040ee40
lea ecx, [esp + 0x284]
call fcn.00427370
lea ecx, [esp + 0x28]
call fcn.0042f1f0
jmp 0x4175c6
cmp esi, eax
je 0x4174c1
mov edi, dword [esp + 0x20]
mov ebp, dword [esp + 0x3c]
mov bl, 0x3a
mov eax, dword [esi + 0x2c]
test eax, eax
jle 0x4178f7
lea eax, [esi + 0x24]
push eax
lea ecx, [esi + 0x68]
push ecx
lea ecx, [edi + 0x14]
call fcn.00410b40
mov ecx, eax
call fcn.0040c6c0
jmp 0x4179ab
lea edx, [esi + 0x24]
push edx
lea ecx, [esp + 0x754]
call fcn.0040bbc0
lea ecx, [esp + 0x4b0]
mov byte [esp + 0xe38], 0x39
call fcn.0040c4c0
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x38]
lea edx, [esp + 0x4b0]
mov dword [esp + 0x4ec], eax
push edx
lea eax, [esp + 0x754]
mov dword [esp + 0x588], ecx
push eax
mov ecx, edi
mov byte [esp + 0xe40], bl
mov dword [esp + 0x590], ebp
call fcn.00411c60
lea ecx, [esp + 0x750]
push ecx
lea edx, [esp + 0x798]
push edx
lea ecx, [edi + 0x14]
call fcn.00410b40
mov ecx, eax
call fcn.0040c6c0
lea eax, [esp + 0x4b0]
push eax
mov ecx, edi
call fcn.00411400
mov eax, dword [edi + 4]
test eax, eax
lea ecx, [esp + 0x4b0]
jne 0x4179bf
call fcn.0040aff0
lea ecx, [esp + 0x750]
mov byte [esp + 0xe38], 7
call fcn.0040add0
mov esi, dword [esi]
cmp esi, dword [esp + 0x2a8]
jne 0x4178d4
jmp 0x4174c1
call fcn.0040aff0
lea ecx, [esp + 0x750]
call fcn.0040add0
lea ecx, [esp + 0x2c8]
call fcn.00404d60
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
mov byte [esp + 0xe38], 5
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x417a02
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0xe38], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x417a28
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
lea ecx, [esp + 0x2a0]
call fcn.0040ee40
cmp dword [esp + 0x29c], 0x10
jb 0x417a4e
mov eax, dword [esp + 0x288]
push eax
call fcn.0045ce75
add esp, 4
mov dword [esp + 0x29c], 0xf
mov dword [esp + 0x298], 0
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
mov byte [esp + 0x288], 0
mov dword [esp + 0xe38], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jmp 0x4175bc