Function at 0x411b40
Capabilities:
Authenticate hmac
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x268
mov esi, esp
mov edi, dword [ebp + 8]
call fcn.004140d0
push eax
mov dword [esi + 0xbc], esp
push eax
mov dword [esi + 0x254], esp
push eax
mov dword [esi + 0x70], esp
push eax
mov dword [esi + 0x250], esp
push eax
mov dword [esi + 0xb8], esp
push eax
mov dword [esi + 0x24c], esp
push eax
mov dword [esi + 0xb4], esp
push eax
mov dword [esi + 0x248], esp
push eax
mov dword [esi + 0x6c], esp
push eax
mov dword [esi + 0x244], esp
push eax
mov dword [esi + 0x68], esp
push eax
mov dword [esi + 0x240], esp
sub esp, 0x400
mov dword [esi + 0x23c], esp
push eax
mov ebx, esp
push eax
mov dword [esi + 0xb0], esp
push eax
mov dword [esi + 0xac], esp
push eax
mov dword [esi + 0x238], esp
push eax
mov dword [esi + 0xa8], esp
push eax
mov dword [esi + 0xa4], esp
push eax
mov dword [esi + 0x234], esp
sub esp, 0x40
mov dword [esi + 0x16c], esp
push eax
mov dword [esi + 0x64], esp
push eax
mov dword [esi + 0x230], esp
sub esp, 0x60
mov dword [esi + 0x168], esp
sub esp, 0x10
mov dword [esi + 0xa0], esp
push eax
mov dword [esi + 0x22c], esp
push eax
mov dword [esi + 0x9c], esp
push eax
mov dword [esi + 0x98], esp
push eax
mov dword [esi + 0x228], esp
push eax
mov dword [esi + 0x60], esp
push eax
mov dword [esi + 0x224], esp
sub esp, 0xc
mov dword [esi + 0x5c], esp
push eax
mov dword [esi + 0x220], esp
sub esp, 0xc
mov dword [esi + 0x58], esp
push eax
mov dword [esi + 0x21c], esp
sub esp, 0xc
mov dword [esi + 0x94], esp
push eax
mov dword [esi + 0x218], esp
push eax
mov dword [esi + 0x164], esp
push eax
mov dword [esi + 0x54], esp
push eax
mov dword [esi + 0x214], esp
push eax
mov dword [esi + 0x90], esp
push eax
mov dword [esi + 0x210], esp
sub esp, 0x14
mov dword [esi + 0x8c], esp
push eax
mov dword [esi + 0x20c], esp
push eax
mov dword [esi + 0x88], esp
push eax
mov dword [esi + 0x208], esp
sub esp, 0x3c
mov dword [esi + 0x50], esp
push eax
mov dword [esi + 0x204], esp
sub esp, 0x34
mov dword [esi + 0x4c], esp
push eax
mov dword [esi + 0x200], esp
sub esp, 0x44
mov dword [esi + 0x1fc], esp
sub esp, 0x10
mov dword [esi + 0x160], esp
sub esp, 8
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0x15c], eax
mov esp, eax
push eax
push eax
mov dword [esi + 0x1f8], esp
push eax
mov dword [esi + 0x1f4], esp
sub esp, 0x44
mov dword [esi + 0x1f0], esp
sub esp, 0x10
mov dword [esi + 0x84], esp
sub esp, 4
mov dword [esp], edi
call fcn.00401b60
add esp, 4
mov edi, eax
cmp edi, 0
sete al
test al, 1
jne 0x411d0b
jmp 0x411d12
xor eax, eax
jmp 0x413c75
mov dword [esi + 0xc], ebx
xor ebx, ebx
mov dword [esi], edi
jmp 0x411d1b
sub esp, 4
mov dword [esp], edi
call fcn.00401f30
add esp, 4
cmp ebx, eax
jb 0x411d34
mov al, 1
jmp 0x413c75
sub esp, 8
mov dword [esp], edi
mov dword [esp + 4], ebx
call fcn.00401f40
add esp, 8
mov dword [esi + 0x10], eax
mov eax, dword [esi + 0x254]
mov al, byte [eax]
mov byte [esi + 0xd4], al
mov eax, dword [esi + 0xbc]
mov byte [eax], 0xcd
mov byte [eax + 1], 0x39
xor eax, eax
mov dword [esi + 0x48], ebx
cmp eax, 2
jae 0x411da6
mov ebx, dword [esi + 0xbc]
mov dl, byte [ebx + eax]
mov edi, eax
add edi, 0xf8
mov ecx, 7
sub ecx, eax
and ecx, 8
and edi, 0xf7
or ecx, edi
mov edi, dword [esi]
xor cl, dl
xor cl, 8
add cl, 0x40
mov byte [ebx + eax], cl
mov ebx, dword [esi + 0x48]
add eax, 1
jmp 0x411d69
sub esp, 0xc
mov eax, dword [esi + 0x10]
mov dword [esp], eax
mov eax, dword [esi + 0xbc]
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401e30
add esp, 0xc
cmp eax, 0
setne al
test al, 1
jne 0x411dd8
jmp 0x411f4d
mov eax, dword [esi + 0x250]
mov al, byte [eax]
mov byte [esi + 0xd8], al
mov eax, dword [esi + 0x70]
mov byte [eax], 0xd4
mov byte [eax + 1], 0x27
mov byte [eax + 2], 0xb4
xor eax, eax
cmp eax, 3
jae 0x411e95
mov ecx, dword [esi + 0x70]
movzx ecx, byte [ecx + eax]
mov edx, eax
add edx, 0xf0363fa2
mov dword [esi + 0x1a0], edx
mov edi, 0xfc9c05d
sub edi, eax
or edi, ecx
mov ebx, 0x5d
sub ebx, eax
and ebx, ecx
xor ebx, edi
mov edx, eax
add edx, 0xf0363fa3
mov edi, 0xfc9c05d
sub edi, eax
or edi, ebx
add edi, edx
mov edx, edi
and edx, 2
xor edx, 2
mov ebx, edi
and ebx, 0xfffffffd
imul ebx, edx
mov edx, edi
and edx, 2
or edi, 2
imul edi, edx
add edi, ebx
sub edi, dword [esi + 0x1a0]
mov edx, ecx
xor edx, 0xffffffff
mov ebx, edi
and ebx, edx
xor edi, 0xffffffff
and ecx, edi
mov edi, dword [esi]
sub ecx, ebx
mov ebx, dword [esi + 0x48]
add cl, 0xf0
mov edx, dword [esi + 0x70]
mov byte [edx + eax], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
mov edx, eax
and edx, ecx
shl edx, 1
xor eax, ecx
or eax, edx
xor eax, 1
jmp 0x411df6
sub esp, 0xc
mov eax, dword [esi + 0x10]
mov dword [esp], eax
mov eax, dword [esi + 0x70]
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401e30
add esp, 0xc
cmp eax, 0
je 0x411f4d
mov eax, dword [esi + 0x24c]
mov al, byte [eax]
mov byte [esi + 0xdc], al
mov eax, dword [esi + 0xb8]
mov byte [eax], 0xe5
mov byte [eax + 1], 0x81
xor eax, eax
cmp eax, 2
jae 0x411f12
mov ebx, dword [esi + 0xb8]
mov dl, byte [ebx + eax]
mov ecx, eax
and ecx, 0x80
mov edi, eax
and edi, 0x80
xor edi, 0x80
add ecx, eax
sub ecx, edi
mov edi, dword [esi]
xor cl, dl
mov byte [ebx + eax], cl
mov ebx, dword [esi + 0x48]
add eax, 1
jmp 0x411edb
sub esp, 0xc
mov eax, dword [esi + 0x10]
mov dword [esp], eax
mov eax, dword [esi + 0xb8]
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401e30
add esp, 0xc
cmp eax, 0
setne al
and al, al
xor al, 0xff
and al, 0xff
xor al, 0xff
and al, 0xff
xor al, 0xff
test al, 1
jne 0x411f4f
jmp 0x411f54
jmp 0x411f4f
jmp 0x413c65
mov eax, dword [esi + 0x248]
mov al, byte [eax]
mov byte [esi + 0xe0], al
mov eax, dword [esi + 0xb4]
mov byte [eax], 0xe9
mov byte [eax + 1], 0x5d
xor eax, eax
cmp eax, 2
jae 0x411fc7
mov ebx, dword [esi + 0xb4]
movzx edi, byte [ebx + eax]
mov edx, 0x43
sub edx, eax
mov ecx, edi
xor ecx, 0xffffffff
or edx, ecx
mov ecx, 0xcfc5c243
sub ecx, eax
or ecx, edi
add edx, edi
mov edi, 0xfffffffe
sub edi, edx
and ecx, edi
mov edi, 0x7e2e121e
sub edi, ecx
mov edx, edi
shl edx, 1
and edx, 2
shl edi, 1
and edi, 2
add ecx, 0xe1
add ecx, edi
sub edx, ecx
mov byte [ebx + eax], dl
add eax, 1
jmp 0x411f71
sub esp, 8
mov eax, dword [esi + 0x10]
mov dword [esp], eax
mov eax, dword [esi + 0xb4]
mov dword [esp + 4], eax
call fcn.00401870
add esp, 8
mov dword [esi + 0x1ec], eax
mov eax, dword [esi + 0x244]
mov al, byte [eax]
mov byte [esi + 0xe4], al
mov eax, dword [esi + 0x6c]
mov byte [eax], 0x1a
mov byte [eax + 1], 9
mov byte [eax + 2], 0xbe
xor eax, eax
cmp eax, 3
jae 0x4120d8
mov ecx, dword [esi + 0x6c]
movzx ecx, byte [ecx + eax]
mov dword [esi + 0x198], ecx
mov edi, eax
add edi, 0x3c8e9e5c
mov edx, ecx
shl edx, 1
xor edx, 0xffffffff
add edx, ecx
mov ecx, 0xc37161a3
sub ecx, eax
mov ebx, 0xc37161a3
sub ebx, eax
mov dword [esi + 0x150], ebx
mov ebx, ecx
and ebx, 0x7fedd5f
mov dword [esi + 0x14c], edi
and dword [esi + 0x14c], 0xf80122a0
mov dword [esi + 0x74], eax
mov eax, dword [esi + 0x150]
and eax, 0x7fedd5f
and edi, 0xf80122a0
or ebx, dword [esi + 0x14c]
or eax, edi
xor ebx, eax
or ecx, dword [esi + 0x150]
xor ebx, 0xffffffff
and ecx, ebx
mov edi, dword [esi + 0x198]
mov eax, edi
xor eax, 0xffffffff
and edx, eax
or ecx, edx
mov eax, edi
shl eax, 1
xor eax, 0xffffffff
add eax, edi
mov edx, dword [esi + 0x74]
add edx, 0x3c8e9e5c
or edx, eax
mov eax, dword [esi + 0x74]
sub eax, edx
add eax, 0x3c8e9e5b
and ecx, eax
mov eax, ecx
xor eax, 0xe0
mov edx, ecx
or edx, 0x1f
and edx, eax
mov eax, dword [esi + 0x74]
or ecx, 0x1f
add ecx, edx
add cl, 1
mov edx, dword [esi + 0x6c]
mov byte [edx + eax], cl
add eax, 1
jmp 0x412006
sub esp, 8
mov eax, dword [esi + 0x6c]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x10]
mov dword [esp], eax
call fcn.00401970
add esp, 8
fnstcw word [esi + 0x3e]
movzx eax, word [esi + 0x3e]
or eax, 0xc00
mov word [esi + 0x14a], ax
fldcw word [esi + 0x14a]
fistp dword [esi + 0x25c]
fldcw word [esi + 0x3e]
mov eax, dword [esi + 0x25c]
mov dword [esi + 0x44], eax
mov eax, dword [esi + 0x240]
mov al, byte [eax]
mov byte [esi + 0xe8], al
mov eax, dword [esi + 0x68]
mov byte [eax], 0x67
mov byte [eax + 1], 3
xor edi, edi
cmp edi, 2
jae 0x4121b4
mov eax, dword [esi + 0x68]
movzx eax, byte [eax + edi]
mov dword [esi + 0x174], eax
mov edx, edi
add edx, 0xfeb9b692
mov ecx, 0x146496d
sub ecx, edi
mov ebx, 0x146496d
sub ebx, edi
and ecx, ebx
mov ebx, 0x146496d
sub ebx, edi
and ecx, ebx
mov ebx, eax
xor ebx, 0xffffffff
shl ebx, 1
add ebx, eax
mov eax, edi
add eax, 0xfeb9b692
and edx, eax
or edx, dword [esi + 0x174]
add ebx, 1
or ecx, ebx
mov eax, edx
add eax, 1
xor edx, 0xffffffff
or ecx, edx
add ecx, eax
add ecx, 0xa324b6f
mov eax, ecx
shl eax, 1
and eax, 2
mov edx, ecx
and edx, eax
or ecx, eax
xor ecx, 1
add ecx, edx
mov eax, dword [esi + 0x68]
mov byte [eax + edi], cl
add edi, 1
jmp 0x412135
sub esp, 8
mov eax, dword [esi + 0x68]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x10]
mov dword [esp], eax
call fcn.00401970
add esp, 8
fnstcw word [esi + 0x3c]
movzx eax, word [esi + 0x3c]
or eax, 0xc00
mov word [esi + 0x148], ax
fldcw word [esi + 0x148]
fistp dword [esi + 0x258]
fldcw word [esi + 0x3c]
mov edi, dword [esi + 0x258]
xor eax, eax
sub esp, 0x10
mov ebx, dword [esi + 0x23c]
mov dword [esp], ebx
mov dword [esp + 4], 0x400
mov eax, dword [esi + 0x1ec]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a880
add esp, 0x10
xor eax, eax
sub esp, 0x10
mov dword [esp], ebx
mov eax, dword [esi + 0xc]
mov dword [esp + 4], eax
mov eax, dword [esi + 0xb0]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040af60
add esp, 0x10
test al, 1
jne 0x412258
mov edi, dword [esi]
jmp 0x413c62
cmp edi, 0
sete al
mov byte [esi + 0x23], al
test al, 1
jne 0x41226a
jmp 0x4132ed
mov eax, dword [esi + 0x238]
mov al, byte [eax]
mov byte [esi + 0xec], al
mov eax, dword [esi + 0xac]
mov byte [eax], 0x1c
mov byte [eax + 1], 0xad
xor eax, eax
cmp eax, 2
jae 0x4122b4
mov edi, dword [esi + 0xac]
mov cl, byte [edi + eax]
mov dl, al
add dl, 0xcc
xor dl, cl
add dl, 0xa0
mov byte [edi + eax], dl
mov ecx, eax
shl ecx, 1
xor eax, 0xdcd1336b
add eax, ecx
add eax, 0x232ecc96
jmp 0x412287
mov edi, dword [esi]
jmp 0x4122b8
sub esp, 8
mov eax, dword [esi + 0x10]
mov dword [esp], eax
mov eax, dword [esi + 0xac]
mov dword [esp + 4], eax
call fcn.00401870
add esp, 8
cmp eax, 0
je 0x41251e
sub esp, 4
mov dword [esi + 0x19c], eax
mov dword [esp], eax
call fcn.00413c90
add esp, 4
mov dword [esi + 0x154], eax
add eax, 1
mov ecx, 2
mov dword [esi + 0x194], eax
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x412315
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00407fb0
add esp, 4
mov ebx, eax
xor eax, eax
sub esp, 0x10
mov dword [esp], ebx
mov eax, dword [esi + 0x194]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x19c]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a880
add esp, 0x10
xor eax, eax
sub esp, 0x18
mov dword [esp], 0
mov dword [esi + 0x40], ebx
mov dword [esp + 4], ebx
mov eax, dword [esi + 0x154]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov eax, dword [esi + 0xa8]
mov dword [esp + 0x14], eax
call dword [0x448330]
mov dword [esi + 0x1a4], eax
mov eax, dword [esi + 0x234]
mov cl, byte [eax]
mov byte [esi + 0xf0], cl
mov eax, dword [esi + 0xa4]
mov byte [eax], 0xfd
mov byte [eax + 1], 0x1f
mov byte [eax + 2], 0
mov byte [eax + 3], 0x41
xor ecx, ecx
cmp ecx, 4
jae 0x4123f7
mov eax, dword [esi + 0xa4]
movzx edi, byte [eax + ecx]
mov edx, ecx
add edx, 0xadfa8a6e
mov ebx, edx
and ebx, edi
shl ebx, 1
sub edx, ebx
add edx, edi
mov edi, edx
and edi, 0x71
xor edi, 0x71
and edx, 0x8e
sub edx, edi
mov edi, dword [esi]
add dl, 1
mov byte [eax + ecx], dl
add ecx, 1
jmp 0x4123b9
mov eax, dword [esi + 0xa4]
mov ecx, dword [esi + 0x1a4]
cmp ecx, dword [eax]
sete al
test al, 1
jne 0x41240e
jmp 0x412442
jmp 0x412410
sub esp, 4
mov eax, dword [esi + 0x40]
mov dword [esp], eax
call fcn.00407fc0
add esp, 4
mov eax, dword [esi + 0xc]
mov eax, dword [eax]
sub esp, 4
mov dword [esp], eax
call fcn.004386c0
add esp, 4
jmp 0x412436
xor ebx, ebx
mov eax, 4
jmp 0x412510
mov eax, dword [esi + 0xa8]
mov eax, dword [eax]
mov ecx, 2
mul ecx
seto dl
jmp 0x412456
mov ecx, 0xffffffff
test dl, 1
jne 0x412462
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00407fb0
add esp, 4
mov ebx, eax
mov eax, dword [0x448330]
mov edi, dword [esi + 0xa8]
mov ecx, dword [edi]
xor edx, edx
sub esp, 0x18
mov dword [esp], 0
mov edx, dword [esi + 0x40]
mov dword [esp + 4], edx
mov edx, dword [esi + 0x154]
mov dword [esp + 8], edx
mov dword [esp + 0xc], ebx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edi
call eax
cmp eax, 0
setge al
test al, 1
mov edi, dword [esi]
jne 0x4124f9
jmp 0x4124b8
jmp 0x4124ba
sub esp, 4
mov dword [esp], ebx
call fcn.00407fc0
add esp, 4
jmp 0x4124ca
jmp 0x4124cc
jmp 0x4124ce
sub esp, 4
mov eax, dword [esi + 0x40]
mov dword [esp], eax
call fcn.00407fc0
add esp, 4
mov eax, dword [esi + 0xc]
mov eax, dword [eax]
sub esp, 4
mov dword [esp], eax
call fcn.004386c0
add esp, 4
mov eax, 4
jmp 0x412510
jmp 0x4124fb
sub esp, 4
mov eax, dword [esi + 0x40]
mov dword [esp], eax
call fcn.00407fc0
add esp, 4
xor eax, eax
jmp 0x412510
cmp eax, 0
je 0x412b55
jmp 0x412b57
call fcn.00408810
and eax, 0xf
xor eax, 0xffffffff
sub eax, 0xffffffff
mov ecx, 0x10
sub ecx, eax
xor eax, eax
mov edx, dword [esi + 0x16c]
cmp eax, ecx
jb 0x4126b8
mov word [edx], 0
mov eax, dword [esi + 0x22c]
mov al, byte [eax]
mov byte [esi + 0xf8], al
mov eax, dword [esi + 0xa0]
mov byte [eax], 0xaa
mov byte [eax + 1], 0xc0
mov byte [eax + 2], 0x75
mov byte [eax + 3], 0xc2
mov byte [eax + 4], 0x86
mov byte [eax + 5], 0xc4
mov byte [eax + 6], pe_nt_image_headers32
mov byte [eax + 7], 0xc6
mov byte [eax + 8], 0x77
mov byte [eax + 9], 0x38
mov byte [eax + 0xa], 0x5c
mov byte [eax + 0xb], 0x3a
mov byte [eax + 0xc], 0x97
mov byte [eax + 0xd], 0x3c
mov byte [eax + 0xe], 0x3d
mov byte [eax + 0xf], 0x3e
xor eax, eax
cmp eax, 0x10
jae 0x4125e4
mov ebx, dword [esi + 0xa0]
mov dl, byte [ebx + eax]
mov edi, eax
add edi, 0x77
mov ecx, 8
sub ecx, eax
and ecx, 0x21
and edi, 0xde
or ecx, edi
xor cl, dl
xor cl, 0x21
add cl, 0x48
mov byte [ebx + eax], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
mov edx, eax
shl edx, 1
and edx, 2
add eax, 1
sub eax, edx
add eax, ecx
jmp 0x41259d
sub esp, 8
mov edi, dword [esi + 0x168]
mov dword [esp], edi
mov eax, dword [esi + 0xa0]
mov dword [esp + 4], eax
call fcn.00409cd0
mov dword [esp], eax
mov eax, dword [esi + 0x16c]
mov dword [esp + 4], eax
call fcn.00409cd0
add esp, 8
sub eax, 0x9e6ea077
sub eax, edi
add eax, 0x9e6ea077
sar eax, 1
xor ecx, ecx
sub esp, 0x18
mov dword [esp], 0
mov dword [esp + 4], edi
mov dword [esi + 0x1e0], eax
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov eax, dword [esi + 0x9c]
mov dword [esp + 0x14], eax
call dword [0x448330]
mov ecx, dword [esi + 0x228]
mov cl, byte [ecx]
mov byte [esi + 0xfc], cl
mov ecx, dword [esi + 0x98]
mov byte [ecx], 0xa6
mov byte [ecx + 1], 0x46
mov byte [ecx + 2], 0x47
mov byte [ecx + 3], 0x18
xor ecx, ecx
cmp ecx, 4
jae 0x4126a1
mov edi, dword [esi + 0x98]
mov dl, byte [edi + ecx]
mov dh, cl
add dh, 0x2d
xor dh, dl
add dh, 0x98
mov byte [edi + ecx], dh
add ecx, 1
jmp 0x412681
mov ecx, dword [esi + 0x98]
mov ecx, dword [ecx]
cmp eax, ecx
mov edi, dword [esi]
jne 0x4127c8
jmp 0x4127e7
mov dword [esi + 0x1d4], edx
mov dword [esi + 0x1d8], eax
mov dword [esi + 0x1dc], ecx
call fcn.00408810
mov dword [esi + 0x1c0], eax
mov eax, dword [esi + 0x230]
mov cl, byte [eax]
mov byte [esi + 0xf4], cl
mov eax, dword [esi + 0x64]
mov byte [eax], 0xa1
mov byte [eax + 1], 0x46
mov byte [eax + 2], 0x47
mov byte [eax + 3], 0x58
xor eax, eax
cmp eax, 4
jae 0x412790
mov ecx, dword [esi + 0x64]
movzx edi, byte [ecx + eax]
mov ebx, eax
shl ebx, 1
and ebx, 0xb8afe25a
mov edx, eax
xor edx, 0xdc57f12d
mov ecx, edx
and ecx, ebx
shl ecx, 1
xor edx, ebx
add edx, ecx
mov ecx, edx
and ecx, edi
shl ecx, 1
sub edx, ecx
add edx, edi
mov edi, edx
and edi, 0x1d407695
mov ecx, edx
and ecx, 2
xor ecx, 2
mov ebx, edx
and ebx, 0x1d407695
imul ebx, ecx
mov ecx, edx
and ecx, 2
or edi, 2
imul edi, ecx
add edi, ebx
xor edx, 0x1d407697
add edx, edi
mov ecx, edx
xor ecx, 0xfffffffe
mov edi, edx
or edi, 1
and edi, ecx
or edx, 1
mov ebx, edx
and ebx, ecx
or edx, edi
add ebx, edx
mov ecx, dword [esi + 0x64]
mov byte [ecx + eax], bl
mov ecx, eax
or ecx, 1
or eax, 0x6ed5347a
add eax, ecx
add eax, 0x912acb86
jmp 0x4126f7
mov eax, dword [esi + 0x1c0]
cdq
mov ecx, dword [esi + 0x64]
idiv dword [ecx]
movsx eax, byte [edx + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov edx, dword [esi + 0x1d4]
mov ecx, edx
add ecx, 2
mov word [edx], ax
mov eax, dword [esi + 0x1d8]
sub eax, 0xffffffff
mov edx, ecx
mov ecx, dword [esi + 0x1dc]
jmp 0x41253b
mov eax, dword [esi + 0xc]
mov eax, dword [eax]
sub esp, 4
mov dword [esp], eax
call fcn.004386c0
add esp, 4
xor ebx, ebx
mov eax, 4
jmp 0x412b50
mov eax, dword [esi + 0x9c]
mov eax, dword [eax]
mov ecx, dword [esi + 0x224]
mov cl, byte [ecx]
mov byte [esi + 0x100], cl
mov ecx, dword [esi + 0x60]
mov byte [ecx], 0x16
mov byte [ecx + 1], 0x13
mov byte [ecx + 2], 0x14
mov byte [ecx + 3], 0x15
xor ecx, ecx
cmp ecx, 4
jae 0x412856
mov edx, dword [esi + 0x60]
mov dl, byte [edx + ecx]
mov byte [esi + 0x19], dl
mov ebx, ecx
add ebx, 1
mov edi, ecx
xor edi, 0xffffffff
or edi, 0x1c6d5202
add edi, ebx
shl edi, 1
mov ebx, ecx
xor ebx, 0x1c6d5202
mov edx, ebx
and edx, edi
shl edx, 1
xor ebx, edi
add ebx, edx
xor bl, byte [esi + 0x19]
add bl, 0xf0
mov edx, dword [esi + 0x60]
mov byte [edx + ecx], bl
add ecx, 1
jmp 0x412811
mov ecx, dword [esi + 0x60]
mov ecx, dword [ecx]
mov edx, eax
and edx, ecx
shl edx, 1
xor eax, ecx
add eax, edx
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x41287b
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00407fb0
add esp, 4
mov ebx, eax
mov eax, dword [0x448330]
mov edi, dword [esi + 0x9c]
mov ecx, dword [edi]
xor edx, edx
sub esp, 0x18
mov dword [esp], 0
mov edx, dword [esi + 0x168]
mov dword [esp + 4], edx
mov edx, dword [esi + 0x1e0]
mov dword [esp + 8], edx
mov dword [esp + 0xc], ebx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edi
call eax
cmp eax, 0
jge 0x4128fa
mov edi, dword [esi]
jmp 0x4128cf
sub esp, 4
mov dword [esp], ebx
call fcn.00407fc0
add esp, 4
mov eax, dword [esi + 0xc]
mov eax, dword [eax]
sub esp, 4
mov dword [esp], eax
call fcn.004386c0
add esp, 4
mov eax, 4
jmp 0x412b50
mov ecx, dword [esi + 0x44]
cmp ecx, 0
jne 0x4129c4
mov eax, dword [esi + 0x220]
mov al, byte [eax]
mov byte [esi + 0x104], al
mov eax, dword [esi + 0x5c]
mov byte [eax], 0xc7
mov byte [eax + 1], 0xfa
mov byte [eax + 2], 0x9e
mov byte [eax + 3], 0xfc
mov byte [eax + 4], 0x75
mov byte [eax + 5], 0xfe
mov byte [eax + 6], 0x9a
mov byte [eax + 7], 0xf0
mov byte [eax + 8], 0xf1
mov byte [eax + 9], 0xf2
xor eax, eax
cmp eax, 0xa
jae 0x4129a8
mov ecx, dword [esi + 0x5c]
movzx edx, byte [ecx + eax]
mov ecx, eax
xor ecx, 0x4416318e
mov edi, eax
or edi, 0x3be9ce71
and edi, ecx
shl edi, 1
mov ecx, eax
xor ecx, 0x3be9ce71
add ecx, edi
mov edi, edx
and edi, 0xd6
xor edi, 0xd6
mov dword [esi + 4], ebx
mov ebx, edx
add ebx, 1
xor edx, 0xffffffff
or edx, 0x29
add edx, ebx
mov ebx, dword [esi + 4]
or edi, edx
mov edx, ecx
xor edx, 0x29
xor ecx, 0x29
or ecx, edx
xor ecx, edi
mov dl, 0x77
sub dl, cl
mov ecx, dword [esi + 0x5c]
mov byte [ecx + eax], dl
add eax, 1
jmp 0x412940
sub esp, 8
mov dword [esp], ebx
mov eax, dword [esi + 0x5c]
mov dword [esp + 4], eax
call fcn.00414060
add esp, 8
mov edi, dword [esi]
jmp 0x412b4c
cmp ecx, 1
sete al
mov edi, dword [esi]
test al, 1
jne 0x4129d5
jmp 0x412ac7
mov eax, dword [esi + 0x21c]
mov al, byte [eax]
mov byte [esi + 0x108], al
mov eax, dword [esi + 0x58]
mov byte [eax], 0x18
mov byte [eax + 1], 0x77
mov byte [eax + 2], 0xdc
mov byte [eax + 3], 0x79
mov byte [eax + 4], 0xd6
mov byte [eax + 5], 0x7b
mov byte [eax + 6], 0xd0
mov byte [eax + 7], 0x7d
mov byte [eax + 8], 0x7e
mov byte [eax + 9], 0x7f
xor eax, eax
cmp eax, 0xa
jae 0x412aa9
mov ecx, dword [esi + 0x58]
movzx edi, byte [ecx + eax]
mov edx, 0x2fd65ab9
sub edx, eax
or edx, edi
mov ecx, 0xb9
sub ecx, eax
mov dword [esi + 4], ebx
mov ebx, 0xb9
sub ebx, eax
or ecx, ebx
and ecx, edi
xor edx, 0xffffffff
or ecx, edx
mov edi, ecx
xor edi, 0x814d2a30
mov edx, ecx
or edx, 0x7eb2d5cf
and edx, edi
mov ebx, edx
and ebx, 0xfd
mov edi, ecx
and edi, 2
xor edi, 2
imul edi, ebx
mov ebx, ecx
and ebx, 2
or edx, 2
imul edx, ebx
mov ebx, dword [esi + 4]
add edx, edi
xor ecx, 0xcf
add ecx, edx
add cl, 1
mov edx, dword [esi + 0x58]
mov byte [edx + eax], cl
mov edx, eax
add edx, 1
mov ecx, eax
xor ecx, 0xffffffff
or ecx, 1
add ecx, edx
or eax, 1
mov edx, eax
and edx, ecx
shl edx, 1
xor eax, ecx
add eax, edx
jmp 0x412a0f
sub esp, 8
mov dword [esp], ebx
mov eax, dword [esi + 0x58]
mov dword [esp + 4], eax
call fcn.00414060
add esp, 8
mov edi, dword [esi]
jmp 0x412ac2
jmp 0x412b4c
cmp ecx, 2
sete al
test al, 1
jne 0x412ad3
jmp 0x412b4c
mov eax, dword [esi + 0x218]
mov al, byte [eax]
mov byte [esi + 0x10c], al
mov eax, dword [esi + 0x94]
mov byte [eax], 0x7f
mov byte [eax + 1], 0x42
mov byte [eax + 2], 0xb3
mov byte [eax + 3], 0x44
mov byte [eax + 4], 0xb6
mov byte [eax + 5], 0x46
mov byte [eax + 6], 0x76
mov byte [eax + 7], 0x58
mov byte [eax + 8], 0x59
mov byte [eax + 9], 0x5a
xor eax, eax
cmp eax, 0xa
jae 0x412b32
mov edi, dword [esi + 0x94]
mov cl, byte [edi + eax]
mov dl, al
add dl, 9
xor dl, cl
add dl, 0xb8
mov byte [edi + eax], dl
mov edi, dword [esi]
add eax, 1
jmp 0x412b10
sub esp, 8
mov dword [esp], ebx
mov eax, dword [esi + 0x94]
mov dword [esp + 4], eax
call fcn.00414060
add esp, 8
jmp 0x412b4c
xor eax, eax
jmp 0x412b50
cmp eax, 0
jne 0x412b57
xor eax, eax
cmp eax, 0
sete al
test al, 1
jne 0x412b66
jmp 0x413c62
jmp 0x412b68
xor eax, eax
sub esp, 0x1c
mov dword [esp], ebx
mov eax, dword [esi + 0x164]
mov dword [esp + 4], eax
mov dword [esp + 8], 0x100002
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 5
mov dword [esp + 0x14], 0x60
mov dword [esp + 0x18], 0x80
call fcn.0043c060
add esp, 0x1c
mov dword [esi + 0x158], eax
cmp eax, 0
setge al
test al, 1
mov dword [esi + 4], ebx
jne 0x412bc2
jmp 0x412cea
mov eax, dword [esi + 0xb0]
mov eax, dword [eax]
mov ecx, dword [esi + 0xc]
mov ecx, dword [ecx]
mov ebx, dword [esi + 0x164]
mov edx, dword [ebx]
xor edi, edi
sub esp, 0x10
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0043c6b0
add esp, 0x10
mov dword [esi + 0x158], eax
mov eax, dword [ebx]
mov dword [esi + 0x1d0], eax
mov al, byte [esi + 0xd0]
mov byte [esi + 0x134], al
mov byte [esi + 0x34], 0x8c
mov byte [esi + 0x35], 0x8b
mov byte [esi + 0x36], 0x8a
mov byte [esi + 0x37], 0x89
xor ebx, ebx
cmp ebx, 4
jae 0x412c69
movzx eax, byte [esi + ebx + 0x34]
mov dword [esi + 0x17c], eax
mov ecx, 0xa4
sub ecx, ebx
or ecx, eax
mov edx, ebx
add edx, 0x5b
mov edi, ebx
add edi, 0x5b
mov eax, ebx
add eax, 0x5b
or edi, eax
and edi, edx
mov eax, dword [esi + 0x17c]
xor eax, 0xffffffff
or edi, eax
and ecx, edi
mov al, 0x27
sub al, cl
mov byte [esi + ebx + 0x34], al
add ebx, 1
jmp 0x412c23
mov eax, dword [esi + 0x34]
mov dword [esi + 0x1b8], eax
xor edx, edx
mov edi, dword [esi]
cmp edx, dword [0x448334]
jb 0x412c80
jmp 0x412ce8
mov eax, dword [0x448338]
cmp dword [eax + edx*8], 0xb430e561
sete cl
mov byte [esi + 0x1e], cl
test cl, 1
jne 0x412c99
jmp 0x412cdb
mov eax, dword [eax + edx*8 + 4]
cmp eax, dword [esi + 0x1b8]
je 0x412cdb
mov ecx, dword [0x44833c]
sub esp, 0x10
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 4
mov eax, dword [esi + 0x1d0]
mov dword [esp + 0xc], eax
mov dword [esi + 0x1a8], edx
call fcn.0043a070
mov edx, dword [esi + 0x1a8]
add esp, 0x10
test byte [esi + 0x1e], 1
je 0x412ce3
jmp 0x412ce8
add edx, 1
jmp 0x412c76
jmp 0x412cea
mov ebx, dword [esi + 0xc]
mov eax, dword [ebx]
sub esp, 4
mov dword [esp], eax
call fcn.004386c0
add esp, 4
mov dword [ebx], 0
cmp dword [esi + 0x158], 0
setge al
test al, 1
mov ebx, dword [esi + 4]
mov ecx, dword [esi + 0x44]
jne 0x412d2a
jmp 0x412d19
mov dword [esi + 8], 0
mov eax, 4
jmp 0x4132da
cmp ecx, 1
jne 0x41306d
mov eax, dword [esi + 0x214]
mov al, byte [eax]
mov byte [esi + 0x110], al
mov eax, dword [esi + 0x54]
mov byte [eax], 0x9e
mov byte [eax + 1], 0x97
mov byte [eax + 2], 0x7a
xor eax, eax
cmp eax, 3
jae 0x412db0
mov ecx, dword [esi + 0x54]
movzx edx, byte [ecx + eax]
mov ecx, eax
add ecx, 0x349e24c0
mov edi, 0x4b61db3f
sub edi, eax
and edi, 0x73a8e508
and ecx, 0x8c571af7
sub ecx, edi
xor ecx, edx
mov edi, ecx
and edi, 1
xor edi, 1
mov edx, 0xc0
sub edx, ecx
mov ebx, 0xc0
sub ebx, ecx
or edx, ebx
and edx, 0xfe
mov ecx, edi
shl ecx, 1
or edx, edi
xor edx, 0xffffffff
add ecx, edx
mov edx, dword [esi + 0x54]
mov byte [edx + eax], cl
add eax, 1
jmp 0x412d51
sub esp, 8
mov eax, dword [esi + 0x10]
mov dword [esp], eax
mov eax, dword [esi + 0x54]
mov dword [esp + 4], eax
call fcn.00401870
add esp, 8
mov dword [esi + 0x80], eax
mov eax, dword [esi + 0x210]
mov al, byte [eax]
mov byte [esi + 0x114], al
mov eax, dword [esi + 0x90]
mov byte [eax], 0xa1
mov byte [eax + 1], 0xb3
mov byte [eax + 2], 0xc2
xor eax, eax
cmp eax, 3
jae 0x412e0c
mov edi, dword [esi + 0x90]
mov cl, byte [edi + eax]
mov dl, al
add dl, 0xc0
xor dl, cl
mov byte [edi + eax], dl
add eax, 1
jmp 0x412def
sub esp, 8
mov eax, dword [esi + 0x10]
mov dword [esp], eax
mov eax, dword [esi + 0x90]
mov dword [esp + 4], eax
call fcn.00401870
add esp, 8
mov dword [esi + 0x7c], eax
sub esp, 4
mov eax, dword [esi + 4]
mov dword [esp], eax
call fcn.004140b0
add esp, 4
mov edi, eax
cmp dword [esi + 0x80], 0
setne al
mov dword [esi + 0x78], 0
mov byte [esi + 0x21], al
test al, 1
jne 0x412e57
jmp 0x412e73
sub esp, 4
mov eax, dword [esi + 0x80]
mov dword [esp], eax
call fcn.004081e0
add esp, 4
sub eax, 0xffffffff
mov dword [esi + 0x78], eax
jmp 0x412e73
cmp dword [esi + 0x7c], 0
setne cl
xor eax, eax
mov byte [esi + 0x22], cl
test cl, 1
jne 0x412e86
jmp 0x412e9c
sub esp, 4
mov eax, dword [esi + 0x7c]
mov dword [esp], eax
call fcn.004081e0
add esp, 4
add eax, 1
jmp 0x412e9c
add edi, 9
mov ecx, edi
mov edx, dword [esi + 0x78]
and ecx, edx
shl ecx, 1
xor edi, edx
add edi, ecx
sub edi, 0xd3bbfce0
mov dword [esi + 0x1e8], eax
add edi, eax
add edi, 0xd3bbfce0
add edi, 1
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x412edb
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00407fb0
add esp, 4
mov edx, eax
mov eax, dword [esi + 0x20c]
mov al, byte [eax]
mov byte [esi + 0x118], al
mov eax, dword [esi + 0x8c]
mov byte [eax], 0x59
mov byte [eax + 1], 0xcc
mov byte [eax + 2], 0x58
mov byte [eax + 3], 0xce
mov byte [eax + 4], 0x51
mov byte [eax + 5], 0xc0
mov byte [eax + 6], 0xa5
mov byte [eax + 7], 0xc2
mov byte [eax + 8], 0x5f
mov byte [eax + 9], 0xc4
mov byte [eax + 0xa], 0x59
mov byte [eax + 0xb], 0xc6
mov byte [eax + 0xc], 0x94
mov byte [eax + 0xd], 0xf8
mov byte [eax + 0xe], 0xab
mov byte [eax + 0xf], 0xfa
mov byte [eax + 0x10], 0xfb
mov byte [eax + 0x11], 0xfc
xor eax, eax
mov dword [esi + 8], edx
cmp eax, 0x12
jae 0x412f83
mov ebx, dword [esi + 0x8c]
mov dl, byte [ebx + eax]
mov edi, eax
shl edi, 1
and edi, 0xa6
mov ecx, eax
xor ecx, 0x53
add ecx, edi
xor cl, dl
add cl, 0x68
mov byte [ebx + eax], cl
mov edx, dword [esi + 8]
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x412f4b
sub esp, 8
mov dword [esp], edx
mov eax, dword [esi + 0x8c]
mov dword [esp + 4], eax
call fcn.00409cd0
add esp, 8
mov ecx, eax
add ecx, 2
mov word [eax], 0x20
add ecx, 2
mov word [eax + 2], 0x22
sub esp, 8
mov dword [esp], ecx
mov ebx, dword [esi + 4]
mov dword [esp + 4], ebx
call fcn.00409cd0
add esp, 8
mov edi, eax
add edi, 2
mov word [eax], 0x22
cmp ebx, 0
je 0x412fe2
sub esp, 4
mov dword [esp], ebx
call fcn.00407fc0
add esp, 4
jmp 0x412fe2
test byte [esi + 0x21], 1
jne 0x412fea
jmp 0x413025
mov ebx, edi
add ebx, 2
mov word [edi], 0x2c
xor eax, eax
sub esp, 0x10
mov dword [esp], ebx
mov eax, dword [esi + 0x78]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x80]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a880
add esp, 0x10
shl eax, 1
mov edi, ebx
add edi, eax
jmp 0x413025
test byte [esi + 0x22], 1
jne 0x41302d
jmp 0x413062
mov eax, edi
add eax, 2
mov word [edi], 0x2c
xor ecx, ecx
sub esp, 0x10
mov dword [esp], eax
mov eax, dword [esi + 0x1e8]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x7c]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a880
add esp, 0x10
jmp 0x413062
xor ebx, ebx
xor ecx, ecx
mov edi, dword [esi]
jmp 0x4132d8
cmp ecx, 2
sete al
jmp 0x413075
mov dword [esi + 8], 0
test al, 1
jne 0x413085
jmp 0x4132d8
sub esp, 4
mov dword [esp], ebx
call fcn.004140b0
add esp, 4
mov ecx, eax
and ecx, 0x1d
shl ecx, 1
xor eax, 0x1d
add eax, ecx
add eax, 1
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4130b8
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00407fb0
add esp, 4
mov dword [esi + 8], eax
mov eax, dword [esi + 0x208]
mov al, byte [eax]
mov byte [esi + 0x11c], al
mov eax, dword [esi + 0x88]
mov byte [eax], 0x9c
mov byte [eax + 1], 0x7f
mov byte [eax + 2], 0x60
mov byte [eax + 3], 0x61
xor eax, eax
cmp eax, 4
jae 0x413132
mov ebx, dword [esi + 0x88]
movzx edi, byte [ebx + eax]
mov edx, eax
add edx, 0x4976950e
mov ecx, edi
shl ecx, 1
xor ecx, 0xffffffff
add ecx, edi
and edx, ecx
mov ecx, 0xf1
sub ecx, eax
and ecx, edi
or ecx, edx
mov edx, ecx
xor edx, 0x71
shl ecx, 1
and ecx, 0x1c
sub ecx, edx
add cl, 1
mov byte [ebx + eax], cl
add eax, 1
jmp 0x4130ee
mov eax, dword [esi + 0x204]
mov al, byte [eax]
mov byte [esi + 0x120], al
mov eax, dword [esi + 0x50]
mov byte [eax], 0x22
mov byte [eax + 1], 0xb3
mov byte [eax + 2], 0xdb
mov byte [eax + 3], 0xb5
mov byte [eax + 4], 0x21
mov byte [eax + 5], 0xb7
mov byte [eax + 6], 0xdd
mov byte [eax + 7], 0xb9
mov byte [eax + 8], 0x28
mov byte [eax + 9], 0xbb
mov byte [eax + 0xa], 0x2f
mov byte [eax + 0xb], 0xbd
mov byte [eax + 0xc], 0xd6
mov byte [eax + 0xd], 0xbf
mov byte [eax + 0xe], 0xc5
mov byte [eax + 0xf], 0xa1
mov byte [eax + 0x10], 0xce
mov byte [eax + 0x11], 0xa3
mov byte [eax + 0x12], 0xc8
mov byte [eax + 0x13], 0xa5
mov byte [eax + 0x14], 0x86
mov byte [eax + 0x15], 0xa7
mov byte [eax + 0x16], 0x85
mov byte [eax + 0x17], 0xa9
mov byte [eax + 0x18], 0xcf
mov byte [eax + 0x19], 0xab
mov byte [eax + 0x1a], 0x34
mov byte [eax + 0x1b], 0xad
mov byte [eax + 0x1c], 0xcb
mov byte [eax + 0x1d], 0xaf
mov byte [eax + 0x1e], 0xb3
mov byte [eax + 0x1f], 0xd1
mov byte [eax + 0x20], 0xf2
mov byte [eax + 0x21], 0xd3
mov byte [eax + 0x22], 0xb6
mov byte [eax + 0x23], 0xd5
mov byte [eax + 0x24], 0x4f
mov byte [eax + 0x25], 0xd7
mov byte [eax + 0x26], 0x48
mov byte [eax + 0x27], 0xd9
mov byte [eax + 0x28], 0xbb
mov byte [eax + 0x29], 0xdb
mov byte [eax + 0x2a], 0x4f
mov byte [eax + 0x2b], 0xdd
mov byte [eax + 0x2c], 0x4d
mov byte [eax + 0x2d], 0xdf
mov byte [eax + 0x2e], 0xe0
mov byte [eax + 0x2f], 0xc1
mov byte [eax + 0x30], 0xef
mov byte [eax + 0x31], 0xc3
mov byte [eax + 0x32], 0xa2
mov byte [eax + 0x33], 0xc5
mov byte [eax + 0x34], 0xe6
mov byte [eax + 0x35], 0xc7
mov byte [eax + 0x36], 0xea
mov byte [eax + 0x37], 0xc9
mov byte [eax + 0x38], 0xca
mov byte [eax + 0x39], 0xcb
xor eax, eax
mov ebx, dword [esi + 4]
cmp eax, 0x3a
jae 0x413297
mov ecx, dword [esi + 0x50]
movzx edx, byte [ecx + eax]
mov ecx, eax
add ecx, 0xbd1980a2
xor ecx, edx
mov edx, ecx
and edx, 0x1733faed
mov ebx, ecx
and ebx, 2
xor ebx, 2
mov edi, ecx
and edi, 0x1733faed
imul edi, ebx
mov ebx, ecx
and ebx, 2
or edx, 2
imul edx, ebx
mov ebx, dword [esi + 4]
add edx, edi
xor ecx, 0x1733faef
add ecx, edx
mov edi, ecx
xor edi, 0xfe
mov edx, ecx
or edx, 1
and edx, edi
or ecx, 1
add edx, ecx
mov ecx, dword [esi + 0x50]
mov byte [ecx + eax], dl
add eax, 1
jmp 0x41322f
sub esp, 8
mov eax, dword [esi + 8]
mov dword [esp], eax
mov eax, dword [esi + 0x50]
mov dword [esp + 4], eax
call fcn.00409cd0
mov dword [esp], eax
mov dword [esp + 4], ebx
call fcn.00409cd0
mov dword [esp], eax
mov eax, dword [esi + 0x88]
mov dword [esp + 4], eax
call fcn.00409cd0
add esp, 8
mov edi, dword [esi]
jmp 0x4132d1
mov ecx, 2
jmp 0x4132d8
xor eax, eax
cmp eax, 0
sete al
test al, 1
jne 0x41353f
jmp 0x413c62
xor edi, 1
mov ecx, dword [esi + 0x44]
mov eax, ecx
xor eax, 2
or edi, eax
sete al
test al, 1
jne 0x413311
mov dword [esi + 8], 0
xor ebx, ebx
mov edi, dword [esi]
jmp 0x41353f
mov eax, dword [esi + 0xc]
mov eax, dword [eax]
sub esp, 4
mov dword [esp], eax
call fcn.00413c90
add esp, 4
mov edi, eax
add edi, 1
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x413341
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00407fb0
add esp, 4
mov edx, eax
mov eax, dword [esi + 0xc]
mov eax, dword [eax]
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x1e4], edx
mov dword [esp], edx
mov dword [esp + 4], edi
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a880
add esp, 0x10
mov eax, dword [esi + 0xb0]
mov eax, dword [eax]
add eax, 0x1b123951
sub eax, 0x1b123939
add eax, 1
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4133a7
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00407fb0
add esp, 4
mov ebx, eax
mov eax, dword [esi + 0x200]
mov al, byte [eax]
mov byte [esi + 0x124], al
mov eax, dword [esi + 0x4c]
mov byte [eax], 0x2d
mov byte [eax + 1], 0x9e
mov byte [eax + 2], 0x20
mov byte [eax + 3], 0x90
mov byte [eax + 4], 0x26
mov byte [eax + 5], 0x92
mov byte [eax + 6], 0x36
mov byte [eax + 7], 0x94
mov byte [eax + 8], 0x27
mov byte [eax + 9], 0x96
mov byte [eax + 0xa], 0x24
mov byte [eax + 0xb], 0xe8
mov byte [eax + 0xc], 0x51
mov byte [eax + 0xd], 0xea
mov byte [eax + 0xe], 0x4e
mov byte [eax + 0xf], 0xec
mov byte [eax + 0x10], 0x51
mov byte [eax + 0x11], 0xee
mov byte [eax + 0x12], 0x53
mov byte [eax + 0x13], 0xe0
mov byte [eax + 0x14], 0x81
mov byte [eax + 0x15], 0xe2
mov byte [eax + 0x16], 0x9e
mov byte [eax + 0x17], 0xe4
mov byte [eax + 0x18], 0x40
mov byte [eax + 0x19], 0xe6
mov byte [eax + 0x1a], 0x6f
mov byte [eax + 0x1b], 0xf8
mov byte [eax + 0x1c], 0x5c
mov byte [eax + 0x1d], 0xfa
mov byte [eax + 0x1e], 0x58
mov byte [eax + 0x1f], 0xfc
mov byte [eax + 0x20], 0x9d
mov byte [eax + 0x21], 0xfe
mov byte [eax + 0x22], 0x5d
mov byte [eax + 0x23], 0xf0
mov byte [eax + 0x24], pe_nt_image_headers32
mov byte [eax + 0x25], 0xf2
mov byte [eax + 0x26], 0x43
mov byte [eax + 0x27], 0xf4
mov byte [eax + 0x28], 0x54
mov byte [eax + 0x29], 0xf6
mov byte [eax + 0x2a], 0x44
mov byte [eax + 0x2b], 0xc8
mov byte [eax + 0x2c], 0x7a
mov byte [eax + 0x2d], 0xca
mov byte [eax + 0x2e], 0xab
mov byte [eax + 0x2f], 0xcc
mov byte [eax + 0x30], 0xcd
mov byte [eax + 0x31], 0xce
xor eax, eax
mov dword [esi + 8], ebx
cmp eax, 0x32
jae 0x4134ff
mov ecx, dword [esi + 0x4c]
mov cl, byte [ecx + eax]
mov byte [esi + 0x20], cl
movzx edi, cl
mov dword [esi + 0x14], eax
mov ecx, dword [esi + 0x14]
add ecx, 0x35
mov ebx, 0xc133a0ca
sub ebx, dword [esi + 0x14]
or ebx, edi
mov edx, 0xca
sub edx, dword [esi + 0x14]
and edx, edi
mov edi, 0x4133a0ca
sub edi, dword [esi + 0x14]
mov eax, 0x4133a0ca
sub eax, dword [esi + 0x14]
and edi, eax
xor ebx, 0xffffffff
or edx, ebx
mov ebx, dword [esi + 8]
or edi, edx
xor edi, 0xffffffff
shl edi, 1
xor edi, 0xffffffff
add ecx, edi
add cl, byte [esi + 0x20]
add cl, 0x59
mov eax, dword [esi + 0x14]
mov edx, dword [esi + 0x4c]
mov byte [edx + eax], cl
mov eax, dword [esi + 0x14]
add eax, 1
jmp 0x413494
sub esp, 8
mov dword [esp], ebx
mov eax, dword [esi + 0x4c]
mov dword [esp + 4], eax
call fcn.00409cd0
mov dword [esp], eax
mov ebx, dword [esi + 0x1e4]
mov dword [esp + 4], ebx
call fcn.00409cd0
add esp, 8
mov edi, dword [esi]
sub esp, 4
mov dword [esp], ebx
call fcn.00407fc0
add esp, 4
mov ecx, dword [esi + 0x44]
jmp 0x41353b
xor ebx, ebx
jmp 0x41353f
test ecx, ecx
je 0x413560
jmp 0x413545
mov eax, ecx
sub eax, 1
je 0x4136fc
jmp 0x413552
sub ecx, 2
je 0x413999
jmp 0x413c22
test byte [esi + 0x23], 1
jne 0x41356b
jmp 0x4136fc
xor eax, eax
mov ecx, 0x11
mov dword [esi + 4], ebx
mov ebx, dword [esi + 0x1fc]
mov edi, ebx
rep stosd dword es:[edi], eax
mov dword [ebx], 0x44
mov edi, dword [0x447328]
call fcn.004140d0
call fcn.004140d0
sub esp, 8
mov dword [esp], edi
mov dword [esp + 4], 0x755f867b
call fcn.0043b990
add esp, 8
test eax, eax
setne cl
xor ecx, ecx
sub esp, 0x28
mov ecx, dword [esi + 4]
mov dword [esp], ecx
mov ecx, dword [esi + 8]
mov dword [esp + 4], ecx
mov dword [esp + 8], 0
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x20], ebx
mov ecx, dword [esi + 0x160]
mov dword [esp + 0x24], ecx
call eax
cmp eax, 0
je 0x4136f2
mov eax, dword [esi + 0x160]
mov eax, dword [eax]
mov dword [esi + 0x1c4], eax
mov al, byte [esi + 0xcc]
mov byte [esi + 0x138], al
mov byte [esi + 0x30], 0x8c
mov byte [esi + 0x31], 0x8b
mov byte [esi + 0x32], 0x8a
mov byte [esi + 0x33], 0x89
xor ebx, ebx
cmp ebx, 4
jae 0x41367d
movzx eax, byte [esi + ebx + 0x30]
mov dword [esi + 0x180], eax
mov ecx, 0xa4
sub ecx, ebx
or ecx, eax
mov edx, ebx
add edx, 0x5b
mov edi, ebx
add edi, 0x5b
mov eax, ebx
add eax, 0x5b
or edi, eax
and edi, edx
mov eax, dword [esi + 0x180]
xor eax, 0xffffffff
or edi, eax
and ecx, edi
mov al, 0x27
sub al, cl
mov byte [esi + ebx + 0x30], al
add ebx, 1
jmp 0x413637
mov ecx, dword [esi + 0x30]
xor edi, edi
cmp edi, dword [0x448334]
jb 0x41368c
jmp 0x4136f2
mov eax, dword [0x448338]
cmp dword [eax + edi*8], 0xb430e561
sete dl
test dl, 1
jne 0x4136a2
jmp 0x4136e6
mov eax, dword [eax + edi*8 + 4]
cmp eax, ecx
je 0x4136e6
mov dword [esi + 0x1ac], ecx
mov ecx, dword [0x44833c]
sub esp, 0x10
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 4
mov eax, dword [esi + 0x1c4]
mov dword [esp + 0xc], eax
mov byte [esi + 0x1a], dl
call fcn.0043a070
mov dl, byte [esi + 0x1a]
mov ecx, dword [esi + 0x1ac]
add esp, 0x10
test dl, 1
je 0x4136ed
jmp 0x4136f2
add edi, 1
jmp 0x413682
mov edi, dword [esi]
mov ebx, dword [esi + 4]
jmp 0x413c22
mov eax, dword [0x447328]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0x4e0c8565
call fcn.0043b990
add esp, 8
test eax, eax
setne cl
mov ecx, dword [esi + 0xc]
mov ecx, dword [ecx]
xor edx, edx
lea edx, [0x421650]
sub esp, 0x18
mov dword [esp], 0
mov dword [esp + 4], 0
mov dword [esp + 8], edx
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0
call eax
mov dword [esi + 0x170], eax
cmp eax, 0
je 0x413994
mov dword [esi + 4], ebx
mov eax, dword [esi + 0x1f4]
mov cl, byte [eax]
mov byte [esi + 0x128], cl
mov eax, dword [esi + 0x1f8]
mov byte [eax], 0x6d
mov byte [eax + 1], 0xa4
mov byte [eax + 2], 0x23
mov byte [eax + 3], 0x4c
mov byte [eax + 4], 0x6e
mov byte [eax + 5], 0x6d
mov byte [eax + 6], 0x6c
mov byte [eax + 7], 0x6b
xor ecx, ecx
cmp ecx, 8
jae 0x4137b6
mov dl, byte [eax + ecx]
mov dh, cl
add dh, 0x45
xor dh, dl
add dh, 0xd8
mov byte [eax + ecx], dh
add ecx, 1
jmp 0x41379c
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov eax, dword [esi + 0x15c]
mov dword [eax + 4], edx
mov dword [eax], ecx
mov cl, byte [esi + 0x12c]
mov byte [esi + 0x130], cl
mov byte [esi + 0x38], 0x8c
mov byte [esi + 0x39], 0x8b
mov byte [esi + 0x3a], 0x8a
mov byte [esi + 0x3b], 0x89
xor eax, eax
cmp eax, 4
jae 0x41382a
movzx ecx, byte [esi + eax + 0x38]
mov dword [esi + 0x184], ecx
mov edx, 0xa4
sub edx, eax
or edx, ecx
mov edi, eax
add edi, 0x5b
mov ebx, eax
add ebx, 0x5b
mov ecx, eax
add ecx, 0x5b
or ebx, ecx
and ebx, edi
mov ecx, dword [esi + 0x184]
xor ecx, 0xffffffff
or ebx, ecx
and edx, ebx
mov cl, 0x27
sub cl, dl
mov byte [esi + eax + 0x38], cl
add eax, 1
jmp 0x4137e4
mov eax, dword [esi + 0x38]
xor edi, edi
cmp edi, dword [0x448334]
jb 0x413839
jmp 0x4138b6
mov ecx, dword [0x448338]
cmp dword [ecx + edi*8], 0xa67d73aa
sete dl
test dl, 1
jne 0x413850
jmp 0x4138a7
mov ecx, dword [ecx + edi*8 + 4]
cmp ecx, eax
je 0x4138a7
mov dword [esi + 0x1bc], eax
mov eax, dword [0x44833c]
mov byte [esi + 0x1f], dl
xor edx, edx
sub esp, 0x18
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], 0xc
mov eax, dword [esi + 0x170]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0
mov eax, dword [esi + 0x15c]
mov dword [esp + 0x14], eax
call fcn.0043a070
mov dl, byte [esi + 0x1f]
add esp, 0x18
mov eax, dword [esi + 0x1bc]
test dl, 1
je 0x4138ae
jmp 0x4138b6
add edi, 1
jmp 0x41382f
mov al, byte [esi + 0xc8]
mov byte [esi + 0x13c], al
mov byte [esi + 0x2c], 0x8c
mov byte [esi + 0x2d], 0x8b
mov byte [esi + 0x2e], 0x8a
mov byte [esi + 0x2f], 0x89
xor eax, eax
cmp eax, 4
jae 0x41391a
movzx ecx, byte [esi + eax + 0x2c]
mov dword [esi + 0x188], ecx
mov edx, 0xa4
sub edx, eax
or edx, ecx
mov edi, eax
add edi, 0x5b
mov ebx, eax
add ebx, 0x5b
mov ecx, eax
add ecx, 0x5b
or ebx, ecx
and ebx, edi
mov ecx, dword [esi + 0x188]
xor ecx, 0xffffffff
or ebx, ecx
and edx, ebx
mov cl, 0x27
sub cl, dl
mov byte [esi + eax + 0x2c], cl
add eax, 1
jmp 0x4138d4
mov eax, dword [esi + 0x2c]
xor edi, edi
cmp edi, dword [0x448334]
jb 0x413929
jmp 0x41398f
mov ecx, dword [0x448338]
cmp dword [ecx + edi*8], 0xb430e561
sete dl
test dl, 1
jne 0x413940
jmp 0x413983
mov ecx, dword [ecx + edi*8 + 4]
cmp ecx, eax
je 0x413983
mov dword [esi + 0x1b0], eax
mov eax, dword [0x44833c]
sub esp, 0x10
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], 4
mov eax, dword [esi + 0x170]
mov dword [esp + 0xc], eax
mov byte [esi + 0x1b], dl
call fcn.0043a070
mov dl, byte [esi + 0x1b]
add esp, 0x10
mov eax, dword [esi + 0x1b0]
test dl, 1
je 0x41398a
jmp 0x41398f
add edi, 1
jmp 0x41391f
mov edi, dword [esi]
mov ebx, dword [esi + 4]
jmp 0x413c22
xor eax, eax
sub esp, 0xc
mov edi, dword [esi + 0x1f0]
mov dword [esp], edi
mov dword [esp + 4], 0
mov dword [esp + 8], 0x44
call fcn.00408150
add esp, 0xc
mov dword [edi], 0x44
mov eax, dword [0x447328]
mov dword [esi + 0x178], eax
call fcn.004140d0
call fcn.004140d0
sub esp, 8
mov eax, dword [esi + 0x178]
mov dword [esp], eax
mov dword [esp + 4], 0x755f867b
call fcn.0043b990
add esp, 8
test eax, eax
setne cl
xor ecx, ecx
sub esp, 0x28
mov dword [esp], 0
mov ecx, dword [esi + 8]
mov dword [esp + 4], ecx
mov dword [esp + 8], 0
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0x8000000
mov dword [esp + 0x18], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x20], edi
mov ecx, dword [esi + 0x84]
mov dword [esp + 0x24], ecx
call eax
cmp eax, 0
je 0x413c20
mov dword [esi + 4], ebx
mov eax, dword [esi + 0x84]
mov eax, dword [eax + 4]
mov dword [esi + 0x1cc], eax
mov al, byte [esi + 0xc4]
mov byte [esi + 0x140], al
mov byte [esi + 0x28], 0x8c
mov byte [esi + 0x29], 0x8b
mov byte [esi + 0x2a], 0x8a
mov byte [esi + 0x2b], 0x89
xor ebx, ebx
cmp ebx, 4
jae 0x413acd
movzx eax, byte [esi + ebx + 0x28]
mov dword [esi + 0x18c], eax
mov ecx, 0xa4
sub ecx, ebx
or ecx, eax
mov edx, ebx
add edx, 0x5b
mov edi, ebx
add edi, 0x5b
mov eax, ebx
add eax, 0x5b
or edi, eax
and edi, edx
mov eax, dword [esi + 0x18c]
xor eax, 0xffffffff
or edi, eax
and ecx, edi
mov al, 0x27
sub al, cl
mov byte [esi + ebx + 0x28], al
add ebx, 1
jmp 0x413a87
mov ebx, dword [esi + 0x28]
xor edi, edi
cmp edi, dword [0x448334]
jb 0x413adc
jmp 0x413b36
mov eax, dword [0x448338]
cmp dword [eax + edi*8], 0xb430e561
sete cl
test cl, 1
jne 0x413af2
jmp 0x413b2a
mov eax, dword [eax + edi*8 + 4]
cmp eax, ebx
je 0x413b2a
mov byte [esi + 0x1d], cl
mov ecx, dword [0x44833c]
sub esp, 0x10
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 4
mov eax, dword [esi + 0x1cc]
mov dword [esp + 0xc], eax
call fcn.0043a070
mov cl, byte [esi + 0x1d]
add esp, 0x10
test cl, 1
je 0x413b31
jmp 0x413b36
add edi, 1
jmp 0x413ad2
mov eax, dword [esi + 0x84]
mov eax, dword [eax]
mov dword [esi + 0x1c8], eax
mov al, byte [esi + 0xc0]
mov byte [esi + 0x144], al
mov byte [esi + 0x24], 0x8c
mov byte [esi + 0x25], 0x8b
mov byte [esi + 0x26], 0x8a
mov byte [esi + 0x27], 0x89
xor ebx, ebx
cmp ebx, 4
jae 0x413ba8
movzx eax, byte [esi + ebx + 0x24]
mov dword [esi + 0x190], eax
mov ecx, 0xa4
sub ecx, ebx
or ecx, eax
mov edx, ebx
add edx, 0x5b
mov edi, ebx
add edi, 0x5b
mov eax, ebx
add eax, 0x5b
or edi, eax
and edi, edx
mov eax, dword [esi + 0x190]
xor eax, 0xffffffff
or edi, eax
and ecx, edi
mov al, 0x27
sub al, cl
mov byte [esi + ebx + 0x24], al
add ebx, 1
jmp 0x413b62
mov ecx, dword [esi + 0x24]
xor edi, edi
cmp edi, dword [0x448334]
jb 0x413bb7
jmp 0x413c1d
mov eax, dword [0x448338]
cmp dword [eax + edi*8], 0xb430e561
sete dl
test dl, 1
jne 0x413bcd
jmp 0x413c11
mov eax, dword [eax + edi*8 + 4]
cmp eax, ecx
je 0x413c11
mov dword [esi + 0x1b4], ecx
mov ecx, dword [0x44833c]
sub esp, 0x10
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 4
mov eax, dword [esi + 0x1c8]
mov dword [esp + 0xc], eax
mov byte [esi + 0x1c], dl
call fcn.0043a070
mov dl, byte [esi + 0x1c]
mov ecx, dword [esi + 0x1b4]
add esp, 0x10
test dl, 1
je 0x413c18
jmp 0x413c1d
add edi, 1
jmp 0x413bad
mov ebx, dword [esi + 4]
mov edi, dword [esi]
mov eax, dword [esi + 0xc]
mov eax, dword [eax]
sub esp, 4
mov dword [esp], eax
call fcn.004386c0
add esp, 4
cmp ebx, 0
je 0x413c4a
sub esp, 4
mov dword [esp], ebx
call fcn.00407fc0
add esp, 4
jmp 0x413c4a
mov eax, dword [esi + 8]
cmp eax, 0
je 0x413c60
sub esp, 4
mov dword [esp], eax
call fcn.00407fc0
add esp, 4
jmp 0x413c62
mov ebx, dword [esi + 0x48]
xor eax, eax
sub eax, ebx
add eax, 0xffffffff
xor ebx, ebx
sub ebx, eax
jmp 0x411d1b
and al, 1
movzx eax, al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret