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

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x551fee
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x340
mov eax, dword [0x5ba200]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x328], ecx
mov eax, dword [ebx + 8]
xorps xmm0, xmm0
mov ecx, dword [ebx + 0xc]
mov edx, dword [ebx + 0x14]
mov esi, dword [ebx + 0x18]
movq qword [ebp - 0x28], xmm0
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x320], eax
mov dword [ebp - 0x348], ecx
mov dword [ebp - 0x338], edx
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x28], 0
mov byte [ebp - 0x20], 1
mov dword [ebp - 4], 0
movq qword [ebp - 0x344], xmm0
mov dword [ebp - 0x33c], 0
mov dword [ebp - 0x340], 0
mov dword [ebp - 0x344], 0
mov byte [ebp - 0x33c], 1
mov byte [ebp - 4], 1
mov edi, 2
test edx, edx
js 0x50f322
push 0
push edx
push ecx
mov ecx, eax
call fcn.00437c80
mov edi, eax
mov eax, dword [ebp - 0x28]
test edi, edi
jne 0x50f2ce
test eax, eax
je 0x50f28c
push eax
call fcn.00535f93
add esp, 4
push 2
mov byte [ebp - 0x20], 0
mov dword [ebp - 0x24], 0
call fcn.0053659c
mov esi, dword [ebp - 0x24]
add esp, 4
mov edx, eax
xor ecx, ecx
mov dword [ebp - 0x28], edx
test esi, esi
jle 0x50f2c3
nop
mov ax, word [ecx + ecx]
mov word [edx + ecx*2], ax
inc ecx
mov esi, dword [ebp - 0x24]
mov edx, dword [ebp - 0x28]
cmp ecx, esi
jl 0x50f2b0
xor eax, eax
mov word [edx + esi*2], ax
mov edi, dword [ebp - 0x28]
jmp 0x50f2e5
test eax, eax
je 0x50f2db
push eax
call fcn.00535f93
add esp, 4
mov dword [ebp - 0x28], edi
mov dword [ebp - 0x24], 0
mov byte [ebp - 0x20], 1
test edi, edi
je 0x50f31b
cmp word [edi], 0
je 0x50f31b
push 0
push 1
push 0xffffffffffffffff
push 1
push 0x572d7c
lea ecx, [ebp - 0x28]
call fcn.00403db0
test eax, eax
mov edi, 2
sete byte [ebp - 0x309]
jmp 0x50f479
xor esi, esi
jmp 0x510564
test esi, esi
je 0x50f470
xor eax, eax
mov byte [ebp - 0x20], 0
cmp word [esi], ax
je 0x50f33d
inc eax
cmp word [esi + eax*2], 0
jne 0x50f335
mov dword [ebp - 0x24], eax
xor ecx, ecx
inc eax
mul edi
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0053659c
mov edx, eax
add esp, 4
mov eax, dword [ebp - 0x24]
xor ecx, ecx
mov dword [ebp - 0x28], edx
test eax, eax
jle 0x50f376
mov ax, word [esi + ecx*2]
mov word [edx + ecx*2], ax
inc ecx
mov eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x28]
cmp ecx, eax
jl 0x50f363
xor ecx, ecx
mov word [edx + eax*2], cx
push ecx
lea ecx, [ebp - 0x28]
mov byte [ebp - 0x20], 1
call fcn.00404c20
push esi
call dword [0x5534d4]
test eax, eax
sete byte [ebp - 0x309]
test eax, eax
je 0x50f479
mov eax, dword [ebp - 0x24]
mov byte [ebp - 0x20], 0
test eax, eax
jne 0x50f3c3
mov ecx, dword [ebp - 0x28]
test ecx, ecx
je 0x50f3c0
cmp word [ecx], ax
je 0x50f3c0
inc eax
cmp word [ecx + eax*2], 0
jne 0x50f3b8
mov dword [ebp - 0x24], eax
xor ecx, ecx
nop word [eax + eax]
lea ecx, [ecx + 1]
cmp word [ecx*2 + 0x572d7c], 0
jne 0x50f3d0
lea edi, [eax + ecx]
mov edx, 2
xor ecx, ecx
lea eax, [edi + 1]
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0053659c
mov edx, dword [ebp - 0x28]
add esp, 4
mov dword [ebp - 0x334], eax
mov ecx, eax
test edx, edx
je 0x50f427
movzx esi, word [edx]
test si, si
je 0x50f427
mov eax, esi
mov word [ecx], ax
lea edx, [edx + 2]
movzx eax, word [edx]
add ecx, 2
test ax, ax
jne 0x50f416
mov esi, 0x572d7c
mov edx, 0x5c
sub esi, ecx
mov word [ecx], dx
lea ecx, [ecx + 2]
movzx eax, word [esi + ecx]
mov edx, eax
test ax, ax
jne 0x50f433
xor eax, eax
mov word [ecx], ax
mov eax, dword [ebp - 0x28]
test eax, eax
je 0x50f459
push eax
call fcn.00535f93
add esp, 4
mov eax, dword [ebp - 0x334]
mov dword [ebp - 0x24], edi
mov edi, 2
mov dword [ebp - 0x28], eax
mov byte [ebp - 0x20], 1
jmp 0x50f479
mov al, byte [ebx + 0x10]
mov byte [ebp - 0x309], al
mov ecx, dword [ebp - 0x328]
xorps xmm0, xmm0
movups xmmword [ebp - 0x48], xmm0
mov dword [ebp - 0x48], 0
movups xmmword [ebp - 0x38], xmm0
mov eax, dword [ecx + 0xb20]
push 0
push 0
push eax
mov byte [ebp - 4], 2
movaps xmm0, xmmword [0x5a8650]
push eax
lea eax, [ecx + 0x1a8]
mov dword [ebp - 0x30], 0xd
push eax
lea ecx, [ebp - 0x48]
mov dword [ebp - 0x2c], 0
movups xmmword [ebp - 0x40], xmm0
call fcn.0043a0c0
mov eax, dword [ebp - 0x320]
mov esi, 0x5a5750
cmp dword [ebp - 0x338], 0
mov byte [ebp - 4], 3
mov dword [ebp - 0x344], 0
mov eax, dword [eax + 0x230]
mov dword [ebp - 0x32c], eax
mov eax, str.Edit
cmovge esi, eax
mov byte [ebp - 0x33c], 0
xor ecx, ecx
mov dword [ebp - 0x340], 0
cmp word [esi], cx
je 0x50f51d
inc ecx
cmp word [esi + ecx*2], 0
jne 0x50f515
xor eax, eax
nop
inc eax
cmp word [eax*2 + 0x5a5724], 0
jne 0x50f520
add eax, ecx
xor ecx, ecx
mov dword [ebp - 0x314], eax
inc eax
mul edi
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0053659c
movzx ecx, word [esi]
add esp, 4
mov dword [ebp - 0x334], eax
mov edx, eax
mov edi, ecx
test cx, cx
je 0x50f571
sub esi, eax
nop dword [eax]
mov word [edx], cx
add edx, 2
movzx eax, word [esi + edx]
mov ecx, eax
test ax, ax
jne 0x50f560
mov esi, 0x5a5724
mov ecx, 0x20
sub esi, edx
nop dword [eax]
mov word [edx], cx
lea edx, [edx + 2]
movzx eax, word [esi + edx]
mov ecx, eax
test ax, ax
jne 0x50f580
mov edi, dword [ebp - 0x334]
xor eax, eax
mov word [edx], ax
mov eax, dword [ebp - 0x314]
push 0x268
mov dword [ebp - 0x340], eax
lea eax, [ebp - 0x2b0]
push 0
push eax
mov dword [ebp - 0x344], edi
call fcn.00537cf0
mov esi, dword [ebp - 0x328]
add esp, 0xc
add esi, 0x68
mov byte [ebp - 0x33c], 1
mov dword [ebp - 0x34c], esi
mov word [ebp - 0x278], 0
mov dword [ebp - 0x19c], 0
mov dword [ebp - 0x1a0], 0
mov byte [ebp - 0x198], 1
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x2b0]
push 1
mov dword [ebp - 0x194], 0
mov dword [ebp - 0x70], 0
mov dword [ebp - 0x68], 0
mov dword [ebp - 0x64], 0
call fcn.004398d0
push ecx
test esi, esi
lea eax, [ebp - 0x2b0]
lea ecx, [ebp - 0x2b0]
cmovne eax, esi
mov esi, dword [ebp - 0x32c]
push esi
push 0xffffffffffffffff
push 0xc80000
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xa0
push 0x1f4
push edi
push 0x57a344
mov dword [ebp - 0xf0], eax
call fcn.0042b240
mov byte [ebp - 4], 5
mov edx, esi
push ecx
mov ecx, dword [ebp - 0x80]
call fcn.0041f1c0
mov edi, dword [ebp - 0x320]
xor esi, esi
mov eax, dword [ebp - 0x80]
add edi, 0x50
mov dword [ebp - 0x314], eax
mov eax, dword [edi]
test eax, eax
je 0x50f6ac
push eax
call dword [0x5535a4]
test eax, eax
je 0x50f6ac
inc esi
add edi, 4
cmp esi, 0x30
jl 0x50f690
jmp 0x50f6c5
mov ecx, dword [ebp - 0x320]
mov eax, dword [ebp - 0x314]
mov dword [ecx + esi*4 + 0x50], eax
inc esi
cmp esi, dword [ecx + 0x4c]
jle 0x50f6c5
mov dword [ecx + 0x4c], esi
push 0xffffff
call dword [0x5531a8]
mov ecx, dword [ebp - 0xd0]
mov edi, eax
mov esi, dword [0x5531a4]
test ecx, ecx
je 0x50f6e5
push ecx
call esi
mov eax, dword [ebp - 0xb4]
mov dword [ebp - 0xd0], 0
test eax, eax
je 0x50f705
cmp dword [ebp - 0xac], 4
je 0x50f705
push eax
call esi
movsd xmm0, qword [0x5a80b0]
xor eax, eax
mov dword [ebp - 0xb4], edi
mov dword [ebp - 0xac], 0
mov dword [ebp - 0x8c], 0
mov dword [ebp - 0x88], 0xffffff
movsd qword [ebp - 0x140], xmm0
mov dword [ebp - 0x138], 0x190
mov byte [ebp - 0x134], 1
mov byte [ebp - 0xf2], 0
inc eax
cmp word [eax*2 + str.Arial], 0
jne 0x50f753
inc eax
push eax
push str.Arial
lea eax, [ebp - 0x132]
push 0x20
push eax
call fcn.00539493
add esp, 0x10
lea ecx, [ebp - 0x2b0]
call fcn.00439580
mov esi, dword [0x553644]
test al, al
je 0x50f7ef
mov eax, dword [ebp - 0x270]
push 0
push dword [ebp - 0x194]
inc eax
push eax
push dword [ebp - 0x7c]
movzx eax, byte [ebp - 0x68]
push 0x12
push 0x1cc
push 0x14
and eax, 1
push 0x14
shl eax, 0x11
add eax, 0x50000101
push eax
push 0x5a5758
push 0x5742b0
push 0
call esi
test eax, eax
je 0x50f7ef
push eax
push 0xd
lea ecx, [ebp - 0x2b0]
call fcn.00439290
movaps xmm0, xmmword [0x5a82e0]
lea ecx, [eax + eax*8]
mov eax, dword [ebp - 0x274]
movups xmmword [eax + ecx*8 + 0x24], xmm0
lea ecx, [ebp - 0x2b0]
call fcn.00439580
test al, al
je 0x50f85e
mov eax, dword [ebp - 0x270]
push 0
push dword [ebp - 0x194]
inc eax
push eax
push dword [ebp - 0x7c]
movzx eax, byte [ebp - 0x68]
push 0x12
push 0x32
push 0x2b
and eax, 1
push 0xa
shl eax, 0x11
add eax, 0x50000100
push eax
push 0x5a57bc
push 0x5742b0
push 0
call esi
test eax, eax
je 0x50f85e
push eax
push 0xd
lea ecx, [ebp - 0x2b0]
call fcn.00439290
movaps xmm0, xmmword [0x5a8260]
lea ecx, [eax + eax*8]
mov eax, dword [ebp - 0x274]
movups xmmword [eax + ecx*8 + 0x24], xmm0
mov edi, dword [ebp - 0x28]
test edi, edi
jne 0x50f87d
push 2
call fcn.0053659c
add esp, 4
mov dword [ebp - 0x28], eax
xor ecx, ecx
mov word [eax], cx
mov edi, dword [ebp - 0x28]
mov dword [ebp - 0x24], ecx
lea ecx, [ebp - 0x2b0]
mov byte [ebp - 0x20], 1
call fcn.00439580
test al, al
jne 0x50f894
xor edi, edi
jmp 0x50f904
test byte [ebp - 0x68], 1
mov eax, 0x50020080
push 0
push dword [ebp - 0x194]
mov ecx, 0x50000080
cmovne ecx, eax
mov eax, dword [ebp - 0x270]
inc eax
or ecx, 0x10000
push eax
push dword [ebp - 0x7c]
push 0x14
push 0x16d
push 0x28
push 0x3c
push ecx
push edi
push str.Edit
push 0x200
call esi
test eax, eax
jne 0x50f8df
xor edi, edi
jmp 0x50f904
push eax
push 0xc
lea ecx, [ebp - 0x2b0]
call fcn.00439290
mov ecx, dword [ebp - 0x274]
mov edi, eax
movaps xmm0, xmmword [0x5a8360]
lea edx, [edi + edi*8]
movups xmmword [ecx + edx*8 + 0x24], xmm0
movsd xmm0, qword [0x5a80b0]
sub esp, 0x14
mov dword [ebp - 0x31c], edi
movsd qword [esp + 0xc], xmm0
push 0x190
push ecx
lea ecx, [ebp - 0x2b0]
call fcn.00434410
cmp dword [ebp - 0x80], 0
je 0x50f9ac
lea ecx, [ebp - 0x2b0]
call fcn.00439580
test al, al
je 0x50f9ac
mov eax, dword [ebp - 0x270]
push 0
push dword [ebp - 0x194]
inc eax
push eax
push dword [ebp - 0x7c]
movzx eax, byte [ebp - 0x68]
push 0x16
push 0x3c
push 0x27
and eax, 1
push 0x1ae
shl eax, 0x11
add eax, 0x50010000
push eax
push 0x57ad3c
push str.Button
push 0
call esi
test eax, eax
je 0x50f9ac
push eax
push 3
lea ecx, [ebp - 0x2b0]
call fcn.00439290
mov ecx, dword [ebp - 0x274]
movaps xmm0, xmmword [0x5a83b0]
mov dword [ebp - 0x32c], eax
lea edx, [eax + eax*8]
movups xmmword [ecx + edx*8 + 0x24], xmm0
jmp 0x50f9b6
mov dword [ebp - 0x32c], 0
cmp dword [ebp - 0x80], 0
je 0x50fa30
lea ecx, [ebp - 0x2b0]
call fcn.00439580
test al, al
je 0x50fa30
mov eax, dword [ebp - 0x270]
push 0
push dword [ebp - 0x194]
inc eax
push eax
push dword [ebp - 0x7c]
movzx eax, byte [ebp - 0x68]
push 0x14
push 0xa0
push 0x4b
and eax, 1
push 0x32
shl eax, 0x11
add eax, 0x50010003
push eax
push 0x5a57c8
push str.Button
push 0
call esi
test eax, eax
je 0x50fa30
push eax
push 4
lea ecx, [ebp - 0x2b0]
call fcn.00439290
mov ecx, dword [ebp - 0x274]
movaps xmm0, xmmword [0x5a8340]
lea edx, [eax + eax*8]
movups xmmword [ecx + edx*8 + 0x24], xmm0
jmp 0x50fa32
xor eax, eax
mov dword [ebp - 0x310], eax
mov eax, dword [ebp - 0x28]
test eax, eax
je 0x50fa4e
movzx eax, word [eax]
mov ecx, eax
test ax, ax
je 0x50fa4e
cmp ecx, 0x25
jne 0x50fa5d
push 4
push 0xffffffffffffffff
lea ecx, [ebp - 0x2b0]
call fcn.00435500
cmp dword [ebp - 0x80], 0
je 0x50fae0
lea ecx, [ebp - 0x2b0]
call fcn.00439580
test al, al
je 0x50fae0
mov eax, dword [ebp - 0x270]
push 0
push dword [ebp - 0x194]
inc eax
push eax
push dword [ebp - 0x7c]
movzx eax, byte [ebp - 0x68]
push 0x14
push 0xa0
push 0x4b
and eax, 1
push 0x122
shl eax, 0x11
add eax, 0x50010003
push eax
push 0x5a57f8
push str.Button
push 0
call esi
test eax, eax
je 0x50fae0
push eax
push 4
lea ecx, [ebp - 0x2b0]
call fcn.00439290
mov ecx, dword [ebp - 0x274]
movaps xmm0, xmmword [0x5a8350]
mov dword [ebp - 0x318], eax
lea edx, [eax + eax*8]
movups xmmword [ecx + edx*8 + 0x24], xmm0
jmp 0x50faea
mov dword [ebp - 0x318], 0
cmp byte [ebp - 0x309], 0
je 0x50faf7
push 0x40
jmp 0x50fb1b
cmp dword [ebp - 0x338], 0xffffffff
je 0x50fb19
push 0
push 1
push 0xffffffffffffffff
push 1
push 0x572d7c
lea ecx, [ebp - 0x28]
call fcn.00403db0
test eax, eax
je 0x50fb28
push 4
push 0xffffffffffffffff
lea ecx, [ebp - 0x2b0]
call fcn.00435500
cmp dword [ebp - 0x80], 0
je 0x50fba5
lea ecx, [ebp - 0x2b0]
call fcn.00439580
test al, al
je 0x50fba5
mov eax, dword [ebp - 0x270]
push 0
push dword [ebp - 0x194]
inc eax
push eax
push dword [ebp - 0x7c]
movzx eax, byte [ebp - 0x68]
push 0x1a
push 0x64
push 0x78
and eax, 1
push 0x64
shl eax, 0x11
add eax, 0x50010000
push eax
push 0x57a360
push str.Button
push 0
call esi
test eax, eax
je 0x50fba5
push eax
push 3
lea ecx, [ebp - 0x2b0]
call fcn.00439290
mov ecx, dword [ebp - 0x274]
movaps xmm0, xmmword [0x5a8400]
mov dword [ebp - 0x330], eax
lea edx, [eax + eax*8]
movups xmmword [ecx + edx*8 + 0x24], xmm0
jmp 0x50fbaf
mov dword [ebp - 0x330], 0
push 0xffffffffffffffff
lea ecx, [ebp - 0x2b0]
call fcn.0042d000
cmp dword [ebp - 0x80], 0
je 0x50fc3c
lea ecx, [ebp - 0x2b0]
call fcn.00439580
test al, al
je 0x50fc3c
mov eax, dword [ebp - 0x270]
push 0
push dword [ebp - 0x194]
inc eax
push eax
push dword [ebp - 0x7c]
movzx eax, byte [ebp - 0x68]
push 0x1a
push 0x64
push 0x78
and eax, 1
push 0x12c
shl eax, 0x11
add eax, 0x50010000
push eax
push str.Cancel
push str.Button
push 0
call esi
test eax, eax
je 0x50fc3c
push eax
push 3
lea ecx, [ebp - 0x2b0]
call fcn.00439290
mov ecx, dword [ebp - 0x274]
movaps xmm0, xmmword [0x5a8410]
mov dword [ebp - 0x324], eax
lea edx, [eax + eax*8]
movups xmmword [ecx + edx*8 + 0x24], xmm0
jmp 0x50fc46
mov dword [ebp - 0x324], 0
mov esi, dword [ebp - 0x310]
push 0x186a0
push ecx
push 0x5a5828
push esi
lea ecx, [ebp - 0x2b0]
call fcn.00436500
push 0x186a0
push ecx
push 0x5a58d0
push dword [ebp - 0x318]
lea ecx, [ebp - 0x2b0]
call fcn.00436500
push 0x186a0
push ecx
push 0x5a5980
push dword [ebp - 0x330]
lea ecx, [ebp - 0x2b0]
call fcn.00436500
push 0x186a0
push ecx
push 0x5a59a0
push dword [ebp - 0x324]
lea ecx, [ebp - 0x2b0]
call fcn.00436500
mov eax, 0x1b
mov byte [ebp - 0x1c], 1
mov word [ebp - 0x1a], ax
mov eax, dword [ebp - 0x324]
mov word [ebp - 0x18], ax
mov eax, dword [ebp - 0x6c]
test eax, eax
je 0x50fcdc
push eax
call dword [0x553678]
push 1
lea eax, [ebp - 0x1c]
push eax
call dword [0x553610]
xor ecx, ecx
cmp eax, 0xffffffff
push 1
cmove eax, ecx
lea ecx, [ebp - 0x2b0]
push 1
mov dword [ebp - 0x6c], eax
call fcn.0042d3a0
mov ecx, dword [ebp - 0x328]
push 0
call fcn.004f7220
test eax, eax
je 0x5104e9
nop word [eax + eax]
mov eax, dword [ebp - 0x34c]
mov eax, dword [eax]
cmp eax, 0xfffffffa
je 0x510668
mov ecx, dword [ebp - 0x328]
lea edx, [ebp - 0x2b0]
cmp dword [ecx + 0x98], edx
jne 0x5104d4
cmp eax, dword [ebp - 0x32c]
jne 0x50ff87
cmp byte [ebp - 0x309], 0
mov esi, dword [ebp - 0x80]
mov eax, dword [ebp - 0x28]
je 0x50fe0e
test eax, eax
je 0x50fd75
push eax
call fcn.00535f93
add esp, 4
push 0x58
lea eax, [ebp - 0x308]
mov dword [ebp - 0x28], 0
push 0
push eax
mov dword [ebp - 0x24], 0
mov byte [ebp - 0x20], 1
call fcn.00537cf0
add esp, 0xc
mov dword [ebp - 0x308], 0x58
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x304], esi
mov dword [ebp - 0x2fc], 0x578d48
push 1
push 0
push 0x800
call fcn.00402cb0
mov dword [ebp - 0x2ec], eax
lea eax, [ebp - 0x308]
push eax
mov dword [ebp - 0x2e8], 0x800
mov dword [ebp - 0x2dc], 0
mov dword [ebp - 0x2d8], 0x5a5a08
mov dword [ebp - 0x2d4], 0x80008
mov dword [ebp - 0x2cc], 0
call dword [0x553138]
test eax, eax
jmp 0x50fe40
test eax, eax
je 0x50fe1b
push eax
call fcn.00535f93
add esp, 4
push esi
sub esp, 0xc
mov dword [ebp - 0x28], 0
mov edx, 0x5a5a2c
mov dword [ebp - 0x24], 0
lea ecx, [ebp - 0x28]
mov byte [ebp - 0x20], 1
call fcn.004191f0
test al, al
je 0x5104ce
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x28]
test eax, eax
jne 0x50fe6d
xor eax, eax
test ecx, ecx
je 0x50fe68
cmp word [ecx], ax
je 0x50fe68
nop dword [eax + eax]
inc eax
cmp word [ecx + eax*2], 0
jne 0x50fe60
mov dword [ebp - 0x24], eax
test eax, eax
setg byte [ebp - 0x20]
test eax, eax
jle 0x50fe93
cmp word [ecx + eax*2 - 2], 0x5c
jne 0x50fe93
dec eax
xor edx, edx
mov dword [ebp - 0x24], eax
mov word [ecx + eax*2], dx
mov eax, dword [ebp - 0x24]
test eax, eax
je 0x50fe93
mov ecx, dword [ebp - 0x28]
jmp 0x50fe75
mov esi, dword [ebp - 0x310]
lea ecx, [ebp - 0x2b0]
push 4
push esi
call fcn.00436840
test eax, eax
je 0x50feb9
push 0x200
lea eax, [ebp - 0x28]
push eax
call fcn.0050f070
cmp byte [ebp - 0x309], 0
jne 0x51016e
push 4
push dword [ebp - 0x318]
lea ecx, [ebp - 0x2b0]
call fcn.00436840
test eax, eax
mov byte [ebp - 0x20], 0
mov eax, 0x57b9d4
mov esi, 0x572d7c
cmove esi, eax
mov eax, dword [ebp - 0x24]
test eax, eax
jne 0x50ff0b
mov ecx, dword [ebp - 0x28]
test ecx, ecx
je 0x50ff08
cmp word [ecx], ax
je 0x50ff08
nop
inc eax
cmp word [ecx + eax*2], 0
jne 0x50ff00
mov dword [ebp - 0x24], eax
xor ecx, ecx
cmp word [esi], cx
je 0x50ff1a
inc ecx
cmp word [esi + ecx*2], 0
jne 0x50ff12
add eax, ecx
mov edx, 2
mov dword [ebp - 0x314], eax
xor ecx, ecx
inc eax
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0053659c
mov edx, dword [ebp - 0x28]
add esp, 4
mov edi, eax
mov ecx, edi
test edx, edx
je 0x50ff61
movzx eax, word [edx]
test ax, ax
je 0x50ff61
nop
mov word [ecx], ax
lea edx, [edx + 2]
movzx eax, word [edx]
add ecx, 2
test ax, ax
jne 0x50ff50
movzx eax, word [esi]
mov edx, eax
test ax, ax
je 0x510141
sub esi, ecx
mov word [ecx], dx
add ecx, 2
movzx eax, word [ecx + esi]
mov edx, eax
test ax, ax
jne 0x50ff71
jmp 0x510141
cmp eax, 0xfffffffb
jne 0x5101ab
mov eax, dword [ebp - 0x28]
mov esi, dword [ecx + 0x78]
test eax, eax
je 0x50ffa3
push eax
call fcn.00535f93
add esp, 4
xor eax, eax
mov byte [ebp - 0x20], 0
test esi, esi
je 0x50ffba
cmp word [esi], ax
je 0x50ffba
inc eax
cmp word [esi + eax*2], 0
jne 0x50ffb2
mov dword [ebp - 0x24], eax
xor ecx, ecx
inc eax
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0053659c
mov edx, eax
add esp, 4
mov eax, dword [ebp - 0x24]
xor ecx, ecx
mov dword [ebp - 0x28], edx
test eax, eax
jle 0x50fff8
mov ax, word [esi + ecx*2]
mov word [edx + ecx*2], ax
inc ecx
mov eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x28]
cmp ecx, eax
jl 0x50ffe5
xor ecx, ecx
mov word [edx + eax*2], cx
push ecx
lea ecx, [ebp - 0x28]
mov byte [ebp - 0x20], 1
call fcn.00404c20
mov eax, dword [ebp - 0x28]
test eax, eax
jne 0x51002a
push 2
call fcn.0053659c
add esp, 4
mov dword [ebp - 0x28], eax
xor ecx, ecx
mov word [eax], cx
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x24], ecx
push eax
mov byte [ebp - 0x20], 1
call dword [0x5534d4]
mov esi, dword [ebp - 0x310]
neg eax
sbb eax, eax
xor ecx, ecx
neg eax
cmp byte [ebp - 0x309], cl
setne cl
cmp eax, ecx
je 0x5104d4
push 4
push esi
lea ecx, [ebp - 0x2b0]
call fcn.00436840
test eax, eax
je 0x510074
push 0x200
lea eax, [ebp - 0x28]
push eax
call fcn.0050f070
cmp byte [ebp - 0x309], 0
jne 0x51016e
push 4
push dword [ebp - 0x318]
lea ecx, [ebp - 0x2b0]
call fcn.00436840
test eax, eax
mov byte [ebp - 0x20], 0
mov eax, 0x57b9d4
mov esi, 0x572d7c
cmove esi, eax
mov eax, dword [ebp - 0x24]
test eax, eax
jne 0x5100cb
mov ecx, dword [ebp - 0x28]
test ecx, ecx
je 0x5100c8
cmp word [ecx], ax
je 0x5100c8
nop word [eax + eax]
inc eax
cmp word [ecx + eax*2], 0
jne 0x5100c0
mov dword [ebp - 0x24], eax
xor ecx, ecx
cmp word [esi], cx
je 0x5100da
inc ecx
cmp word [esi + ecx*2], 0
jne 0x5100d2
add eax, ecx
mov edx, 2
mov dword [ebp - 0x314], eax
xor ecx, ecx
inc eax
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0053659c
mov edx, dword [ebp - 0x28]
add esp, 4
mov edi, eax
mov ecx, edi
test edx, edx
je 0x510121
movzx eax, word [edx]
test ax, ax
je 0x510121
nop
mov word [ecx], ax
lea edx, [edx + 2]
movzx eax, word [edx]
add ecx, 2
test ax, ax
jne 0x510110
movzx eax, word [esi]
mov edx, eax
test ax, ax
je 0x510141
sub esi, ecx
nop dword [eax]
mov word [ecx], dx
add ecx, 2
movzx eax, word [esi + ecx]
mov edx, eax
test ax, ax
jne 0x510130
xor eax, eax
mov word [ecx], ax
mov eax, dword [ebp - 0x28]
test eax, eax
je 0x510156
push eax
call fcn.00535f93
add esp, 4
mov eax, dword [ebp - 0x314]
mov esi, dword [ebp - 0x310]
mov dword [ebp - 0x28], edi
mov dword [ebp - 0x24], eax
mov byte [ebp - 0x20], 1
jmp 0x510171
mov edi, dword [ebp - 0x28]
test edi, edi
jne 0x51018d
push 2
call fcn.0053659c
add esp, 4
mov dword [ebp - 0x28], eax
xor ecx, ecx
mov word [eax], cx
mov edi, dword [ebp - 0x28]
mov dword [ebp - 0x24], ecx
push 0
push edi
mov edi, dword [ebp - 0x31c]
lea ecx, [ebp - 0x2b0]
push edi
mov byte [ebp - 0x20], 1
call fcn.00435c20
jmp 0x5104d4
cmp eax, esi
jne 0x510302
push edi
lea ecx, [ebp - 0x2b0]
call fcn.00436ae0
mov esi, eax
mov eax, dword [ebp - 0x28]
test esi, esi
jne 0x51021b
test eax, eax
je 0x5101d5
push eax
call fcn.00535f93
add esp, 4
push 2
mov byte [ebp - 0x20], 0
mov dword [ebp - 0x24], 0
call fcn.0053659c
mov edx, eax
add esp, 4
mov eax, dword [ebp - 0x24]
xor ecx, ecx
mov dword [ebp - 0x28], edx
test eax, eax
jle 0x510213
nop dword [eax + eax]
mov ax, word [ecx + ecx]
mov word [edx + ecx*2], ax
inc ecx
mov eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x28]
cmp ecx, eax
jl 0x510200
xor ecx, ecx
mov word [edx + eax*2], cx
jmp 0x510232
test eax, eax
je 0x510228
push eax
call fcn.00535f93
add esp, 4
mov dword [ebp - 0x28], esi
mov dword [ebp - 0x24], 0
push ecx
lea ecx, [ebp - 0x28]
mov byte [ebp - 0x20], 1
call fcn.00404c20
mov eax, dword [eax]
test eax, eax
je 0x5104ce
cmp word [eax], 0
mov esi, dword [ebp - 0x310]
je 0x5104d4
push 4
push esi
lea ecx, [ebp - 0x2b0]
call fcn.00436840
test eax, eax
je 0x51027b
push 0x200
lea eax, [ebp - 0x28]
push eax
call fcn.0050f070
jmp 0x5102cd
cmp dword [ebp - 0x28], 0
je 0x5102d3
push 0x2000
call fcn.0053659c
add esp, 4
mov esi, eax
push 0x1000
push esi
push dword [ebp - 0x28]
call dword [0x55340c]
mov edi, eax
test edi, edi
jne 0x5102ad
push esi
call fcn.00535f93
jmp 0x5102be
push dword [ebp - 0x28]
call fcn.00535f93
lea eax, [edi - 1]
mov dword [ebp - 0x28], esi
mov dword [ebp - 0x24], eax
mov esi, dword [ebp - 0x310]
add esp, 4
mov edi, dword [ebp - 0x31c]
cmp dword [ebp - 0x28], 0
jne 0x5102e8
push 2
call fcn.0053659c
add esp, 4
mov dword [ebp - 0x28], eax
xor ecx, ecx
mov word [eax], cx
mov dword [ebp - 0x24], ecx
push 0
push dword [ebp - 0x28]
lea ecx, [ebp - 0x2b0]
mov byte [ebp - 0x20], 1
push edi
call fcn.00435c20
jmp 0x5104d4
cmp eax, dword [ebp - 0x318]
jne 0x510593
cmp byte [ebp - 0x309], 0
jne 0x5104d4
push edi
lea ecx, [ebp - 0x2b0]
call fcn.00436ae0
mov esi, eax
mov eax, dword [ebp - 0x28]
test esi, esi
jne 0x51037b
test eax, eax
je 0x51033d
push eax
call fcn.00535f93
add esp, 4
push 2
mov byte [ebp - 0x20], 0
mov dword [ebp - 0x24], 0
call fcn.0053659c
mov edx, eax
add esp, 4
mov eax, dword [ebp - 0x24]
xor ecx, ecx
mov dword [ebp - 0x28], edx
test eax, eax
jle 0x510373
mov ax, word [ecx + ecx]
mov word [edx + ecx*2], ax
inc ecx
mov eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x28]
cmp ecx, eax
jl 0x510360
xor ecx, ecx
mov word [edx + eax*2], cx
jmp 0x510392
test eax, eax
je 0x510388
push eax
call fcn.00535f93
add esp, 4
mov dword [ebp - 0x28], esi
mov dword [ebp - 0x24], 0
push ecx
lea ecx, [ebp - 0x28]
mov byte [ebp - 0x20], 1
call fcn.00404c20
mov eax, dword [eax]
test eax, eax
je 0x5104ce
cmp word [eax], 0
je 0x5104ce
push 8
push 0
push 0x572c78
push 0x5a5a54
lea ecx, [ebp - 0x28]
call fcn.00405700
push 4
push dword [ebp - 0x318]
lea ecx, [ebp - 0x2b0]
call fcn.00436840
test eax, eax
mov byte [ebp - 0x20], 0
mov eax, 0x57b9d4
mov esi, 0x572d7c
cmove esi, eax
mov eax, dword [ebp - 0x24]
test eax, eax
jne 0x51040d
mov ecx, dword [ebp - 0x28]
test ecx, ecx
je 0x51040a
cmp word [ecx], ax
je 0x51040a
inc eax
cmp word [ecx + eax*2], 0
jne 0x510402
mov dword [ebp - 0x24], eax
xor ecx, ecx
cmp word [esi], cx
je 0x51041c
inc ecx
cmp word [esi + ecx*2], 0
jne 0x510414
add eax, ecx
mov edx, 2
mov dword [ebp - 0x350], eax
xor ecx, ecx
inc eax
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0053659c
mov edx, dword [ebp - 0x28]
mov edi, eax
add esp, 4
mov dword [ebp - 0x314], edi
mov ecx, edi
test edx, edx
je 0x510477
movzx edi, word [edx]
test di, di
je 0x510471
mov eax, edi
nop dword [eax]
mov word [ecx], ax
lea edx, [edx + 2]
movzx eax, word [edx]
add ecx, 2
test ax, ax
jne 0x510460
mov edi, dword [ebp - 0x314]
movzx eax, word [esi]
mov edx, eax
test ax, ax
je 0x510494
sub esi, ecx
mov word [ecx], dx
add ecx, 2
movzx eax, word [ecx + esi]
mov edx, eax
test ax, ax
jne 0x510483
xor eax, eax
mov word [ecx], ax
mov eax, dword [ebp - 0x28]
test eax, eax
je 0x5104a9
push eax
call fcn.00535f93
add esp, 4
mov eax, dword [ebp - 0x350]
lea ecx, [ebp - 0x2b0]
push 0
push edi
mov dword [ebp - 0x28], edi
mov edi, dword [ebp - 0x31c]
push edi
mov dword [ebp - 0x24], eax
mov byte [ebp - 0x20], 1
call fcn.00435c20
mov esi, dword [ebp - 0x310]
mov ecx, dword [ebp - 0x328]
push 0
call fcn.004f7220
test eax, eax
jne 0x50fd20
xor esi, esi
lea ecx, [ebp - 0x2b0]
mov byte [ebp - 4], 0xc
call fcn.0042b800
mov eax, dword [ebp - 0x274]
test eax, eax
je 0x51050d
push eax
call fcn.00535f93
add esp, 4
mov eax, dword [ebp - 0x1a0]
test eax, eax
je 0x510520
push eax
call fcn.00535f93
add esp, 4
mov byte [ebp - 4], 0xd
mov ecx, dword [ebp - 0x2c]
mov edi, dword [ebp - 0x48]
test ecx, ecx
je 0x510546
test edi, edi
je 0x510553
push dword [ebp - 0x30]
lea eax, [ebp - 0x48]
push dword [ebp - 0x40]
push eax
call fcn.0042bc00
call fcn.00405e10
test edi, edi
je 0x510553
push edi
call fcn.00535f93
add esp, 4
push dword [ebp - 0x334]
call fcn.00535f93
mov edi, dword [ebp - 0x28]
add esp, 4
test edi, edi
je 0x510571
push edi
call fcn.00535f93
add esp, 4
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.00535f85
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 0x14
cmp eax, dword [ebp - 0x330]
jne 0x51065c
push edi
lea ecx, [ebp - 0x2b0]
call fcn.00436ae0
mov esi, eax
mov eax, dword [ebp - 0x28]
test esi, esi
jne 0x510602
test eax, eax
je 0x5105c1
push eax
call fcn.00535f93
add esp, 4
push 2
mov byte [ebp - 0x20], 0
mov dword [ebp - 0x24], 0
call fcn.0053659c
mov edx, eax
add esp, 4
mov eax, dword [ebp - 0x24]
xor ecx, ecx
mov dword [ebp - 0x28], edx
test eax, eax
jle 0x5105f7
mov ax, word [ecx + ecx]
mov word [edx + ecx*2], ax
inc ecx
mov eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x28]
cmp ecx, eax
jl 0x5105e4
xor ecx, ecx
mov word [edx + eax*2], cx
mov esi, dword [ebp - 0x28]
jmp 0x510619
test eax, eax
je 0x51060f
push eax
call fcn.00535f93
add esp, 4
mov dword [ebp - 0x28], esi
mov dword [ebp - 0x24], 0
mov byte [ebp - 0x20], 1
test esi, esi
je 0x5104ce
cmp word [esi], 0
je 0x5104ce
mov edi, dword [ebp - 0x338]
mov byte [ebp - 0x20], 1
test edi, edi
jns 0x510670
push ecx
push dword [ebp - 0x348]
mov ecx, dword [ebp - 0x320]
push 0
push 2
push 0xffffffffffffffff
push 0
push esi
call fcn.004374a0
mov esi, eax
jmp 0x5106d5
cmp eax, dword [ebp - 0x324]
jne 0x5104d4
or esi, 0xffffffff
jmp 0x5104eb
mov edx, dword [ebp - 0x348]
mov ecx, dword [ebp - 0x320]
cmp edx, 0xffffffff
jne 0x510684
mov edx, dword [ecx + 0x40]
mov eax, dword [ecx + 0x3c]
test eax, eax
je 0x5106d3
cmp edx, 1
jl 0x5106d3
cmp edx, dword [ecx + 0x40]
jg 0x5106d3
lea ecx, [edx + edx*8]
cmp dword [eax + ecx*8 + 0xc], 0
je 0x5106d3
cmp dword [eax + ecx*8], 0xf
jne 0x5106d3
lea edx, [ebp - 0x2ec]
mov dword [ebp - 0x2e4], 0
push edx
push edi
push 0x1074
mov dword [ebp - 0x2d8], esi
push dword [eax + ecx*8 + 4]
call dword [0x553580]
mov esi, 1
jmp 0x5106d5
xor esi, esi
lea ecx, [ebp - 0x2b0]
call fcn.0042b800
mov eax, dword [ebp - 0x320]
push dword [eax + 0x230]
call dword [0x5535fc]
jmp 0x5104eb