Function at 0x411860
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, 0x6d0
mov esi, esp
mov edi, dword [ebp + 8]
call fcn.00413b70
push eax
mov ebx, esp
push eax
mov dword [esi + 0x21c], esp
sub esp, 0x3c
mov dword [esi + 0xc0], esp
push eax
mov dword [esi + 0x218], esp
sub esp, 0x34
mov dword [esi + 0xbc], esp
push eax
mov dword [esi + 0x214], esp
sub esp, 0x44
mov dword [esi + 0x1b4], esp
sub esp, 0x10
mov dword [esi + 0x1b0], esp
sub esp, 8
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0x1ac], eax
mov esp, eax
push eax
push eax
mov dword [esi + 0xb8], esp
push eax
mov dword [esi + 0x210], esp
sub esp, 0x44
mov dword [esi + 0x20c], esp
sub esp, 0x10
mov dword [esi + 0xb4], esp
sub esp, 4
mov dword [esp], edi
call fcn.00401b50
add esp, 4
mov edx, eax
cmp edx, 0
sete al
test al, 1
jne 0x411902
jmp 0x411909
xor eax, eax
jmp 0x4136b6
mov dword [esi + 0xc4], ebx
xor ebx, ebx
jmp 0x411913
sub esp, 4
mov dword [esp], edx
mov edi, edx
call fcn.00401f20
add esp, 4
cmp ebx, eax
jb 0x41192e
mov al, 1
jmp 0x4136b6
sub esp, 8
mov dword [esp], edi
mov dword [esi + 0x60], ebx
mov dword [esp + 4], ebx
call fcn.00401f30
add esp, 8
mov cl, byte [esi + 0x110]
mov byte [esi + 0x128], cl
mov byte [esi + 0x16], 0x36
mov byte [esi + 0x17], 0xa4
movzx ecx, byte [esi + 0x16]
mov edx, ecx
xor edx, 0xffffffff
or edx, 0x84
or ecx, 0x7ebecd7b
and edx, ecx
mov ecx, edx
and ecx, 1
or edx, 1
add edx, 0xa0
add ecx, edx
add cl, 0x87
mov byte [esi + 0x16], cl
movzx ecx, byte [esi + 0x17]
mov edx, ecx
xor edx, 0xffffffff
or edx, 0x83
or ecx, 0x7ebecd7c
and edx, ecx
mov ecx, edx
and ecx, 1
or edx, 1
add edx, 0xa0
add ecx, edx
add cl, 0x87
mov byte [esi + 0x17], cl
lea ecx, [esi + 0x16]
sub esp, 0xc
mov dword [esi + 0x48], eax
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], 2
call fcn.00401e20
add esp, 0xc
cmp eax, 0
mov edx, edi
je 0x411ad7
mov dword [esi + 8], edx
mov al, byte [esi + 0x10c]
mov byte [esi + 0x12c], al
mov byte [esi + 0x5d], 0x4d
mov byte [esi + 0x5e], 0xb8
mov byte [esi + 0x5f], 0x2d
xor eax, eax
cmp eax, 3
jae 0x411a4b
mov cl, byte [esi + eax + 0x5d]
mov edx, eax
and edx, 0xb1
mov ebx, eax
and ebx, 0xb1
mov edi, eax
and edi, 2
xor edi, 2
imul edi, ebx
mov ebx, eax
and ebx, 2
or edx, 2
imul edx, ebx
add edx, edi
mov ebx, eax
xor ebx, 0xb3
add ebx, edx
xor bl, cl
add bl, 0x68
mov byte [esi + eax + 0x5d], bl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x4119f9
lea eax, [esi + 0x5d]
sub esp, 0xc
mov ecx, dword [esi + 0x48]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401e20
add esp, 0xc
mov edx, dword [esi + 8]
cmp eax, 0
je 0x411ad7
mov edi, edx
mov al, byte [esi + 0x108]
mov byte [esi + 0x130], al
mov byte [esi + 0x14], 0x9e
mov byte [esi + 0x15], 0xfc
mov al, byte [esi + 0x14]
xor al, 0xe3
add al, 0xe8
mov byte [esi + 0x14], al
mov al, byte [esi + 0x15]
xor al, 0xe4
add al, 0xe8
mov byte [esi + 0x15], al
lea eax, [esi + 0x14]
sub esp, 0xc
mov ecx, dword [esi + 0x48]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401e20
add esp, 0xc
cmp eax, 0
setne al
and al, al
xor al, 0xff
xor al, 0xff
or al, 0
xor al, 0xff
or al, 0
test al, 1
mov edx, edi
jne 0x411ad7
jmp 0x411adf
mov eax, dword [esi + 0x60]
jmp 0x4136ac
mov al, byte [esi + 0x104]
mov byte [esi + 0x134], al
mov byte [esi + 0x12], 0xcc
mov byte [esi + 0x13], 0xba
movzx eax, byte [esi + 0x12]
mov ecx, eax
or ecx, 0x773f24ce
and eax, 0xce
xor ecx, 0xffffffff
or eax, ecx
mov ecx, eax
shl ecx, 1
and ecx, 0xee
xor eax, 0x88
sub ecx, eax
mov byte [esi + 0x12], cl
movzx eax, byte [esi + 0x13]
mov ecx, eax
or ecx, 0x773f24cd
and eax, 0xcd
xor ecx, 0xffffffff
or eax, ecx
mov ecx, eax
shl ecx, 1
and ecx, 0xee
xor eax, 0x88
sub ecx, eax
mov byte [esi + 0x13], cl
lea eax, [esi + 0x12]
sub esp, 8
mov ecx, dword [esi + 0x48]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401860
add esp, 8
mov dword [esi + 0x204], eax
mov al, byte [esi + 0x100]
mov byte [esi + 0x138], al
mov byte [esi + 0x5a], 0xaa
mov byte [esi + 0x5b], 0xb9
mov byte [esi + 0x5c], 0xe
xor eax, eax
cmp eax, 3
jae 0x411bcf
movzx edi, byte [esi + eax + 0x5a]
mov edx, 0x379c7693
sub edx, eax
or edx, edi
mov ecx, 0x93
sub ecx, eax
and ecx, edi
xor edx, 0xffffffff
or ecx, edx
mov edx, ecx
shl edx, 1
and edx, 2
xor edx, 2
mov edi, ecx
and edi, 1
mov ebx, 0x60
sub ebx, ecx
and ebx, 0xfe
or ebx, edi
xor ebx, 0xfe
add ebx, edx
mov byte [esi + eax + 0x5a], bl
add eax, 1
jmp 0x411b7f
jmp 0x411bd1
jmp 0x411bd3
sub esp, 8
lea eax, [esi + 0x5a]
mov dword [esp + 4], eax
mov edi, dword [esi + 0x48]
mov dword [esp], edi
call fcn.00401960
add esp, 8
fnstcw word [esi + 0x66]
movzx eax, word [esi + 0x66]
or eax, 0xc00
mov word [esi + 0x19a], ax
fldcw word [esi + 0x19a]
fistp dword [esi + 0x220]
fldcw word [esi + 0x66]
mov eax, dword [esi + 0x220]
mov dword [esi + 0x44], eax
mov al, byte [esi + 0xfc]
mov byte [esi + 0x13c], al
call fcn.00413b70
call fcn.00413b70
call fcn.00413b70
call fcn.00413b70
mov byte [esi + 0x10], 0xac
call fcn.00413b70
call fcn.00413b70
mov byte [esi + 0x11], 0xca
movzx eax, byte [esi + 0x10]
xor eax, 0xb5ca4fc1
add eax, 0x51ad81f7
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
mov byte [esi + 0x10], al
movzx eax, byte [esi + 0x11]
xor eax, 0xb5ca4fc2
add eax, 0x51ad81f7
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
mov byte [esi + 0x11], al
sub esp, 8
lea eax, [esi + 0x10]
mov dword [esp + 4], eax
mov dword [esp], edi
call fcn.00401960
add esp, 8
fnstcw word [esi + 0x64]
movzx eax, word [esi + 0x64]
or eax, 0xc00
mov word [esi + 0x198], ax
fldcw word [esi + 0x198]
fistp dword [esi + 0x224]
fldcw word [esi + 0x64]
mov edi, dword [esi + 0x224]
lea eax, [esi + 0x2c8]
xor ecx, ecx
sub esp, 0x10
mov dword [esp], eax
mov dword [esp + 4], 0x400
mov eax, dword [esi + 0x204]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040aac0
add esp, 0x10
lea eax, [esi + 0x2c8]
lea ecx, [esi + 0x40]
lea edx, [esi + 0x1bc]
xor ebx, ebx
sub esp, 0x10
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
mov dword [esp + 0xc], 0
call fcn.0040b220
add esp, 0x10
test al, 1
jne 0x411d2b
mov edx, dword [esi + 8]
mov eax, dword [esi + 0x60]
jmp 0x4136ac
mov ebx, dword [esi + 0xc4]
cmp edi, 0
sete al
mov byte [esi + 0x53], al
test al, 1
jne 0x411d43
jmp 0x412dc4
mov al, byte [esi + 0xf8]
mov byte [esi + 0x140], al
mov byte [esi + 0xe], 0x69
mov byte [esi + 0xf], 0x1a
mov al, byte [esi + 0xe]
xor al, 0x91
add al, 0x78
mov byte [esi + 0xe], al
mov al, byte [esi + 0xf]
xor al, 0x92
add al, 0x78
mov byte [esi + 0xf], al
lea eax, [esi + 0xe]
sub esp, 8
mov ecx, dword [esi + 0x48]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401860
add esp, 8
cmp eax, 0
setne cl
test cl, 1
jne 0x411d93
jmp 0x412033
sub esp, 4
mov dword [esi + 0x1cc], eax
mov dword [esp], eax
call fcn.004136d0
add esp, 4
mov dword [esi + 0x1a0], eax
add eax, 1
mov ecx, 2
mov dword [esi + 0x1c4], eax
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x411dcc
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408310
add esp, 4
mov edi, eax
xor eax, eax
sub esp, 0x10
mov dword [esp], edi
mov eax, dword [esi + 0x1c4]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x1cc]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040aac0
add esp, 0x10
xor eax, eax
lea eax, [esi + 0xf4]
sub esp, 0x18
mov dword [esp], 0
mov dword [esi + 4], edi
mov dword [esp + 4], edi
mov ecx, dword [esi + 0x1a0]
mov dword [esp + 8], ecx
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], eax
call dword [fcn.00444994]
mov cl, byte [esi + 0xf0]
mov byte [esi + 0x144], cl
mov byte [esi + 0x24], 0x99
mov byte [esi + 0x25], 0xbb
mov byte [esi + 0x26], 0xbc
mov byte [esi + 0x27], 0xfd
movzx ecx, byte [esi + 0x24]
mov edx, ecx
xor edx, 0x89e3629e
xor edx, 0x8b
mov edi, ecx
and edi, 0x15
or edx, edi
and ecx, 0x3c933115
xor edx, 0xffffffff
or ecx, edx
add cl, 0xb0
mov byte [esi + 0x24], cl
movzx ecx, byte [esi + 0x25]
mov edx, ecx
xor edx, 0x89e3629f
xor edx, 0x8b
mov edi, ecx
and edi, 0x14
or edx, edi
and ecx, 0x3c933114
xor edx, 0xffffffff
or ecx, edx
add cl, 0xb0
mov byte [esi + 0x25], cl
movzx ecx, byte [esi + 0x26]
mov edx, ecx
xor edx, 0x89e36298
xor edx, 0x8b
mov edi, ecx
and edi, 0x13
or edx, edi
and ecx, 0x3c933113
xor edx, 0xffffffff
or ecx, edx
add cl, 0xb0
mov byte [esi + 0x26], cl
movzx ecx, byte [esi + 0x27]
mov edx, ecx
xor edx, 0x89e36299
xor edx, 0x8b
mov edi, ecx
and edi, 0x12
or edx, edi
and ecx, 0x3c933112
xor edx, 0xffffffff
or ecx, edx
add cl, 0xb0
mov byte [esi + 0x27], cl
mov ecx, dword [esi + 0x24]
cmp eax, ecx
jne 0x411f43
jmp 0x411f12
sub esp, 4
mov eax, dword [esi + 4]
mov edi, eax
mov dword [esp], eax
call fcn.00408320
add esp, 4
mov eax, dword [esi + 0x40]
sub esp, 4
mov dword [esp], eax
call fcn.00435e20
add esp, 4
mov eax, 4
mov edx, dword [esi + 8]
jmp 0x41201f
mov eax, dword [esi + 0xf4]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x411f5f
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408310
add esp, 4
mov ecx, dword [fcn.00444994]
mov dword [esi + 0x1c0], ecx
mov ecx, dword [esi + 0xf4]
xor edx, edx
sub esp, 0x18
mov dword [esp], 0
mov edi, dword [esi + 4]
mov dword [esp + 4], edi
mov edx, dword [esi + 0x1a0]
mov dword [esp + 8], edx
mov dword [esi + 0x19c], eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
lea eax, [esi + 0xf4]
mov dword [esp + 0x14], eax
call dword [esi + 0x1c0]
cmp eax, 0
jge 0x412002
jmp 0x411fc1
sub esp, 4
mov eax, dword [esi + 0x19c]
mov dword [esp], eax
call fcn.00408320
add esp, 4
jmp 0x411fd7
sub esp, 4
mov dword [esp], edi
call fcn.00408320
add esp, 4
jmp 0x411fe7
mov eax, dword [esi + 0x40]
sub esp, 4
mov dword [esp], eax
call fcn.00435e20
add esp, 4
mov eax, 4
mov edx, dword [esi + 8]
jmp 0x41201f
jmp 0x412004
sub esp, 4
mov dword [esp], edi
call fcn.00408320
add esp, 4
mov edx, dword [esi + 8]
xor eax, eax
mov edi, dword [esi + 0x19c]
jmp 0x41201f
cmp eax, 0
sete cl
test cl, 1
jne 0x412628
jmp 0x41262a
call fcn.00408b50
mov edi, eax
and edi, 0xf
add edi, 0x10
xor ebx, ebx
lea ecx, [esi + 0x288]
cmp ebx, edi
jb 0x412292
mov word [ecx], 0
mov al, byte [esi + 0xe8]
mov byte [esi + 0x14c], al
mov byte [esi + 0x86], 0x9b
mov byte [esi + 0x87], 0x7f
mov byte [esi + 0x88], 0xd4
mov byte [esi + 0x89], 0x61
mov byte [esi + 0x8a], 0xa7
mov byte [esi + 0x8b], 0x63
mov byte [esi + 0x8c], 0xa9
mov byte [esi + 0x8d], 0x65
mov byte [esi + 0x8e], 0xd6
mov byte [esi + 0x8f], 0x67
mov byte [esi + 0x90], 0x8d
mov byte [esi + 0x91], 0x69
mov byte [esi + 0x92], 0xd6
mov byte [esi + 0x93], 0x6b
mov byte [esi + 0x94], 0x6c
mov byte [esi + 0x95], 0x6d
xor eax, eax
cmp eax, 0x10
jae 0x412118
movzx edx, byte [esi + eax + 0x86]
mov edi, eax
and edi, 0x2013d2f2
xor edi, 0x2013d2f2
mov ecx, eax
and ecx, 0xdfec2d0d
sub ecx, edi
xor ecx, edx
add ecx, 0x9e978f
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
mov byte [esi + eax + 0x86], cl
add eax, 1
jmp 0x4120d3
lea eax, [esi + 0x228]
lea ecx, [esi + 0x86]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00409e40
add esp, 8
lea ecx, [esi + 0x288]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00409e40
add esp, 8
lea ecx, [esi + 0x228]
xor ecx, 0xffffffff
add eax, ecx
add eax, 1
sar eax, 1
xor ecx, ecx
lea edx, [esi + 0x228]
lea ecx, [esi + 0xe4]
sub esp, 0x18
mov dword [esp], 0
mov dword [esp + 4], edx
mov dword [esi + 0x208], eax
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], ecx
call dword [fcn.00444994]
mov cl, byte [esi + 0xe0]
mov byte [esi + 0x150], cl
mov byte [esi + 0x1c], 0xb4
mov byte [esi + 0x1d], 0x48
mov byte [esi + 0x1e], 0x49
mov byte [esi + 0x1f], 0xa
mov cl, byte [esi + 0x1c]
movzx edx, cl
and edx, 0x5d84232f
mov ebx, edx
and ebx, 0xfd
mov edi, edx
and edi, 2
xor edi, 2
imul edi, ebx
mov ebx, edx
and ebx, 2
or edx, 2
imul edx, ebx
add edx, edi
mov ebx, 0x5d84232f
sub ebx, edx
add bl, cl
add bl, 0x88
mov byte [esi + 0x1c], bl
mov cl, byte [esi + 0x1d]
movzx edx, cl
and edx, 0x5d842330
and edx, 0xfd
shl edx, 1
mov ebx, 0x5d842330
sub ebx, edx
add bl, cl
add bl, 0x88
mov byte [esi + 0x1d], bl
mov cl, byte [esi + 0x1e]
movzx edx, cl
and edx, 0x5d842331
and edx, 0xfd
shl edx, 1
mov ebx, 0x5d842331
sub ebx, edx
add bl, cl
add bl, 0x88
mov byte [esi + 0x1e], bl
mov cl, byte [esi + 0x1f]
movzx edx, cl
and edx, 0x5d842332
mov ebx, edx
and ebx, 0xfd
mov edi, edx
and edi, 2
xor edi, 2
imul edi, ebx
mov ebx, edx
and ebx, 2
or edx, 2
imul edx, ebx
add edx, edi
mov ebx, 0x5d842332
sub ebx, edx
add bl, cl
add bl, 0x88
mov byte [esi + 0x1f], bl
cmp eax, dword [esi + 0x1c]
setne al
test al, 1
mov ebx, dword [esi + 0xc4]
mov edi, dword [esi + 8]
jne 0x412363
jmp 0x412385
mov dword [esi + 0x1fc], ecx
call fcn.00408b50
mov cl, byte [esi + 0xec]
mov byte [esi + 0x148], cl
mov byte [esi + 0x20], 0x65
mov byte [esi + 0x21], 0x42
mov byte [esi + 0x22], 0x43
mov byte [esi + 0x23], 0x44
movzx edx, byte [esi + 0x20]
xor edx, 0xcfc8df09
mov ecx, edx
shl ecx, 1
and ecx, 2
xor edx, 0xfe
add edx, 0x47
sub ecx, edx
add cl, 0xfd
mov byte [esi + 0x20], cl
movzx edx, byte [esi + 0x21]
xor edx, 0xcfc8df0a
mov ecx, edx
shl ecx, 1
and ecx, 2
xor edx, 0xfe
add edx, 0x47
sub ecx, edx
add cl, 0xfd
mov byte [esi + 0x21], cl
movzx edx, byte [esi + 0x22]
xor edx, 0xcfc8df0b
mov ecx, edx
shl ecx, 1
and ecx, 2
xor edx, 0xfe
add edx, 0x47
sub ecx, edx
add cl, 0xfd
mov byte [esi + 0x22], cl
movzx edx, byte [esi + 0x23]
xor edx, 0xcfc8df0c
mov ecx, edx
shl ecx, 1
and ecx, 2
xor edx, 0xfe
add edx, 0x47
sub ecx, edx
add cl, 0xfd
mov byte [esi + 0x23], cl
cdq
idiv dword [esi + 0x20]
movsx eax, byte [edx + 0x43bb88]
mov edx, dword [esi + 0x1fc]
mov ecx, edx
add ecx, 2
mov word [edx], ax
add ebx, 1
jmp 0x412048
mov eax, dword [esi + 0x40]
sub esp, 4
mov dword [esp], eax
call fcn.00435e20
add esp, 4
mov dword [esi + 4], 0
mov eax, 4
jmp 0x412616
mov eax, dword [esi + 0xe4]
mov ecx, eax
and ecx, 4
shl ecx, 1
xor eax, 4
add eax, ecx
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4123ad
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408310
add esp, 4
mov edi, dword [fcn.00444994]
mov ecx, dword [esi + 0xe4]
xor edx, edx
lea edx, [esi + 0x228]
sub esp, 0x18
mov dword [esp], 0
mov dword [esp + 4], edx
mov edx, dword [esi + 0x208]
mov dword [esp + 8], edx
mov dword [esi + 4], eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
lea eax, [esi + 0xe4]
mov dword [esp + 0x14], eax
call edi
cmp eax, 0
jge 0x412434
mov edi, dword [esi + 8]
jmp 0x412408
sub esp, 4
mov eax, dword [esi + 4]
mov dword [esp], eax
call fcn.00408320
add esp, 4
mov eax, dword [esi + 0x40]
sub esp, 4
mov dword [esp], eax
call fcn.00435e20
add esp, 4
mov eax, 4
jmp 0x412616
mov eax, dword [esi + 0x44]
cmp eax, 0
jne 0x4124d9
mov al, byte [esi + 0xdc]
mov byte [esi + 0x154], al
mov byte [esi + 0x7c], 0xd9
mov byte [esi + 0x7d], 0xf8
mov byte [esi + 0x7e], 0x5c
mov byte [esi + 0x7f], 0xfa
mov byte [esi + 0x80], 0x73
mov byte [esi + 0x81], 0xfc
mov byte [esi + 0x82], 0x58
mov byte [esi + 0x83], 0xfe
mov byte [esi + 0x84], 0xff
mov byte [esi + 0x85], 0xf0
mov edi, dword [esi + 4]
xor eax, eax
cmp eax, 0xa
jae 0x4124bc
mov dl, byte [esi + eax + 0x7c]
mov edi, eax
add edi, 0x3f
xor ecx, ecx
sub ecx, eax
and ecx, 0xcd
and edi, 0x32
or ecx, edi
mov edi, dword [esi + 4]
xor cl, dl
xor cl, 0xcd
add cl, 8
mov byte [esi + eax + 0x7c], cl
add eax, 1
jmp 0x41248b
lea eax, [esi + 0x7c]
sub esp, 8
mov dword [esp], edi
mov dword [esp + 4], eax
call fcn.00413b00
add esp, 8
mov edi, dword [esi + 8]
jmp 0x412612
mov edi, dword [esi + 8]
cmp eax, 1
sete al
test al, 1
jne 0x4124eb
jmp 0x41258f
mov al, byte [esi + 0xd8]
mov byte [esi + 0x158], al
mov byte [esi + 0x72], 0x66
mov byte [esi + 0x73], 0x49
mov byte [esi + 0x74], 0xae
mov byte [esi + 0x75], 0x4b
mov byte [esi + 0x76], 0xa0
mov byte [esi + 0x77], 0x4d
mov byte [esi + 0x78], 0xa2
mov byte [esi + 0x79], 0x4f
mov byte [esi + 0x7a], 0x50
mov byte [esi + 0x7b], 0x51
xor eax, eax
mov edi, dword [esi + 4]
cmp eax, 0xa
jae 0x41256c
movzx edi, byte [esi + eax + 0x72]
mov edx, eax
add edx, 8
mov ebx, 0xaec6e4f7
sub ebx, eax
mov ecx, 0xaec6e4f7
sub ecx, eax
or ebx, ecx
xor ebx, 0xffffffff
mov ecx, edi
or ecx, ebx
and edx, edi
mov edi, dword [esi + 4]
sub ecx, edx
add ecx, 0x763727bf
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
mov byte [esi + eax + 0x72], cl
add eax, 1
jmp 0x412524
lea eax, [esi + 0x72]
sub esp, 8
mov dword [esp], edi
mov dword [esp + 4], eax
call fcn.00413b00
add esp, 8
mov ebx, dword [esi + 0xc4]
mov edi, dword [esi + 8]
jmp 0x412612
cmp dword [esi + 0x44], 2
jne 0x412612
mov al, byte [esi + 0xd4]
mov byte [esi + 0x15c], al
mov byte [esi + 0x68], 0x71
mov byte [esi + 0x69], 0x20
mov byte [esi + 0x6a], 0xb1
mov byte [esi + 0x6b], 0x22
mov byte [esi + 0x6c], 0xb0
mov byte [esi + 0x6d], 0x24
mov byte [esi + 0x6e], 0x74
mov byte [esi + 0x6f], 0x26
mov byte [esi + 0x70], 0x27
mov byte [esi + 0x71], 0x18
xor eax, eax
cmp eax, 0xa
jae 0x4125f8
mov dl, byte [esi + eax + 0x68]
movzx ecx, dl
mov edi, eax
add edi, 0x17
and edi, ecx
shl edi, 1
mov ecx, eax
sub ecx, edi
mov edi, dword [esi + 8]
add cl, 0x97
add cl, dl
add cl, 0x48
mov byte [esi + eax + 0x68], cl
add eax, 1
jmp 0x4125cb
lea eax, [esi + 0x68]
sub esp, 8
mov ecx, dword [esi + 4]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00413b00
add esp, 8
jmp 0x412612
xor eax, eax
jmp 0x412616
cmp eax, 0
sete cl
mov edx, edi
test cl, 1
mov edi, dword [esi + 4]
jne 0x412628
jmp 0x41262a
xor eax, eax
cmp eax, 0
mov eax, dword [esi + 0x60]
jne 0x4136ac
lea eax, [esi + 0x1b8]
xor ecx, ecx
sub esp, 0x1c
mov dword [esp], edi
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.00438f70
add esp, 0x1c
mov ecx, eax
cmp ecx, 0
mov dword [esi + 4], edi
jl 0x412791
mov eax, dword [esi + 0x1bc]
mov ecx, dword [esi + 0x40]
mov edx, dword [esi + 0x1b8]
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.00439520
add esp, 0x10
mov ecx, eax
mov eax, dword [esi + 0x1b8]
mov dword [esi + 0x1d4], eax
mov al, byte [esi + 0x124]
mov byte [esi + 0x184], al
mov byte [esi + 0x38], 0x1e
mov byte [esi + 0x39], 0x1d
mov byte [esi + 0x3a], 0x1c
mov byte [esi + 0x3b], 0x1b
mov al, byte [esi + 0x38]
xor al, 0xd9
add al, 0x38
mov byte [esi + 0x38], al
mov al, byte [esi + 0x39]
xor al, 0xda
add al, 0x38
mov byte [esi + 0x39], al
mov al, byte [esi + 0x3a]
xor al, 0xdb
add al, 0x38
mov byte [esi + 0x3a], al
mov al, byte [esi + 0x3b]
xor al, 0xdc
add al, 0x38
mov byte [esi + 0x3b], al
mov eax, dword [esi + 0x38]
mov dword [esi + 0x1e8], eax
xor eax, eax
cmp eax, dword [0x444998]
jb 0x41271c
jmp 0x412791
mov edi, dword [0x44499c]
cmp dword [edi + eax*8], 0xb430e561
sete dl
mov byte [esi + 0x4f], dl
test dl, 1
mov dword [esi + 0x1d8], eax
jne 0x41273c
jmp 0x41277e
mov eax, dword [edi + eax*8 + 4]
cmp eax, dword [esi + 0x1e8]
je 0x41277e
mov dword [esi + 0x1f8], ecx
mov ecx, dword [0x4449a0]
sub esp, 0x10
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 4
mov eax, dword [esi + 0x1d4]
mov dword [esp + 0xc], eax
call fcn.004371f0
mov ecx, dword [esi + 0x1f8]
add esp, 0x10
test byte [esi + 0x4f], 1
je 0x412786
jmp 0x412791
mov eax, dword [esi + 0x1d8]
add eax, 1
jmp 0x412712
mov edi, ecx
mov eax, dword [esi + 0x40]
sub esp, 4
mov dword [esp], eax
call fcn.00435e20
add esp, 4
mov dword [esi + 0x40], 0
cmp edi, 0
setge al
test al, 1
mov edx, dword [esi + 8]
jne 0x4127ce
jmp 0x4127ba
mov edi, dword [esi + 4]
mov dword [esi + 0x18], 0
mov eax, 4
jmp 0x412db3
cmp dword [esi + 0x44], 1
sete al
mov edi, dword [esi + 4]
test al, 1
jne 0x4127e1
jmp 0x412b3f
mov al, byte [esi + 0xd0]
mov byte [esi + 0x160], al
mov byte [esi + 0x57], 0x13
mov byte [esi + 0x58], 8
mov byte [esi + 0x59], 0xb7
xor eax, eax
cmp eax, 3
jae 0x412839
movzx edx, byte [esi + eax + 0x57]
mov ecx, eax
add ecx, 0xab150d5d
mov ebx, ecx
shl ebx, 1
mov edi, eax
add edi, 0x5c
sub edi, ebx
and edi, edx
xor edx, 0xffffffff
and ecx, edx
or ecx, edi
mov edx, ecx
shl edx, 1
and edx, 0x2e
xor ecx, 0x17
add ecx, edx
add cl, 1
mov byte [esi + eax + 0x57], cl
add eax, 1
jmp 0x4127fb
lea eax, [esi + 0x57]
sub esp, 8
mov ecx, dword [esi + 0x48]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401860
add esp, 8
mov dword [esi + 0xb0], eax
mov al, byte [esi + 0xcc]
mov byte [esi + 0x164], al
mov byte [esi + 0x54], 0xc8
mov byte [esi + 0x55], 0xd8
mov byte [esi + 0x56], 0xab
xor eax, eax
mov edi, dword [esi + 4]
cmp eax, 3
jae 0x412890
mov cl, byte [esi + eax + 0x54]
mov dl, al
add dl, 0xa1
xor dl, cl
add dl, 0xf8
mov byte [esi + eax + 0x54], dl
add eax, 1
jmp 0x412874
lea eax, [esi + 0x54]
sub esp, 8
mov ecx, dword [esi + 0x48]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401860
add esp, 8
mov dword [esi + 0xac], eax
sub esp, 4
mov dword [esp], edi
call fcn.00413b50
add esp, 4
mov dword [esi + 0x1d0], eax
cmp dword [esi + 0xb0], 0
setne al
mov dword [esi + 0xa8], 0
mov byte [esi + 0x51], al
test al, 1
jne 0x4128df
jmp 0x412908
sub esp, 4
mov eax, dword [esi + 0xb0]
mov dword [esp], eax
call fcn.00408530
add esp, 4
add eax, 0x64f51a82
add eax, 1
sub eax, 0x64f51a82
mov dword [esi + 0xa8], eax
jmp 0x412908
cmp dword [esi + 0xac], 0
setne al
xor edx, edx
mov byte [esi + 0x52], al
test al, 1
jne 0x41291d
jmp 0x412938
sub esp, 4
mov eax, dword [esi + 0xac]
mov dword [esp], eax
call fcn.00408530
add esp, 4
mov edx, eax
add edx, 1
jmp 0x412938
xor ecx, ecx
sub ecx, dword [esi + 0x1d0]
mov eax, 9
sub eax, ecx
mov ecx, eax
mov edi, dword [esi + 0xa8]
and ecx, edi
or eax, edi
add eax, ecx
mov dword [esi + 0x1a4], edx
add eax, edx
sub eax, 0xffffffff
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x412976
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408310
add esp, 4
mov dword [esi + 0x18], eax
mov al, byte [esi + 0xc8]
mov byte [esi + 0x168], al
mov byte [esi + 0x96], 0xcd
mov byte [esi + 0x97], 0x50
mov byte [esi + 0x98], 0xc4
mov byte [esi + 0x99], 0x52
mov byte [esi + 0x9a], 0xcd
mov byte [esi + 0x9b], 0x54
mov byte [esi + 0x9c], 0xf1
mov byte [esi + 0x9d], 0x56
mov byte [esi + 0x9e], 0xcb
mov byte [esi + 0x9f], 0x48
mov byte [esi + 0xa0], 0xd5
mov byte [esi + 0xa1], 0x4a
mov byte [esi + 0xa2], 0x18
mov byte [esi + 0xa3], 0x4c
mov byte [esi + 0xa4], 0x1f
mov byte [esi + 0xa5], 0x4e
mov byte [esi + 0xa6], 0x4f
mov byte [esi + 0xa7], 0x40
xor eax, eax
mov edi, dword [esi + 4]
cmp eax, 0x12
jae 0x412a47
movzx edx, byte [esi + eax + 0x96]
mov ecx, eax
add ecx, 0x29a60967
mov edi, ecx
and edi, edx
shl edi, 1
add ecx, edx
sub ecx, edi
mov edi, dword [esi + 4]
add cl, 0xc8
mov byte [esi + eax + 0x96], cl
add eax, 1
jmp 0x412a16
lea eax, [esi + 0x96]
sub esp, 8
mov ecx, dword [esi + 0x18]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00409e40
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 dword [esp + 4], edi
call fcn.00409e40
add esp, 8
mov ecx, edi
mov edi, eax
add edi, 2
mov word [eax], 0x22
cmp ecx, 0
je 0x412aab
sub esp, 4
mov eax, dword [esi + 4]
mov dword [esp], eax
call fcn.00408320
add esp, 4
jmp 0x412aab
mov edx, dword [esi + 0x1a4]
test byte [esi + 0x51], 1
jne 0x412ab9
jmp 0x412afb
mov ecx, edi
add ecx, 2
mov word [edi], 0x2c
xor eax, eax
sub esp, 0x10
mov dword [esp], ecx
mov eax, dword [esi + 0xa8]
mov dword [esp + 4], eax
mov eax, dword [esi + 0xb0]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
mov edi, ecx
call fcn.0040aac0
add esp, 0x10
shl eax, 1
add edi, eax
mov edx, dword [esi + 0x1a4]
test byte [esi + 0x52], 1
jne 0x412b03
jmp 0x412b33
mov eax, edi
add eax, 2
mov word [edi], 0x2c
xor ecx, ecx
sub esp, 0x10
mov dword [esp], eax
mov dword [esp + 4], edx
mov eax, dword [esi + 0xac]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040aac0
add esp, 0x10
xor edi, edi
xor eax, eax
mov edx, dword [esi + 8]
jmp 0x412dac
mov dword [esi + 0x18], 0
mov eax, dword [esi + 0x44]
cmp eax, 2
je 0x412b53
jmp 0x412dac
sub esp, 4
mov dword [esp], edi
call fcn.00413b50
add esp, 4
xor ecx, ecx
sub ecx, eax
mov eax, 0x1d
sub eax, ecx
xor ecx, ecx
sub ecx, eax
add ecx, 0xffffffff
xor eax, eax
sub eax, ecx
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x412b8d
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408310
add esp, 4
mov dword [esi + 0x18], eax
mov eax, dword [esi + 0x21c]
mov al, byte [eax]
mov byte [esi + 0x16c], al
mov byte [ebx], 0xf3
mov byte [ebx + 1], 0xd2
mov byte [ebx + 2], 0xd3
mov byte [ebx + 3], 0xd4
mov dl, byte [ebx]
movzx ecx, dl
and ecx, 0x1f59e219
shl ecx, 1
mov eax, ecx
xor eax, 0x1f59e219
and ecx, 0x60a61de6
shl ecx, 1
sub eax, ecx
add al, dl
add al, 0x38
mov byte [ebx], al
mov dl, byte [ebx + 1]
movzx ecx, dl
and ecx, 0x1f59e21a
shl ecx, 1
mov eax, ecx
xor eax, 0x1f59e21a
and ecx, 0x60a61de5
shl ecx, 1
sub eax, ecx
add al, dl
add al, 0x38
mov byte [ebx + 1], al
mov dl, byte [ebx + 2]
movzx ecx, dl
and ecx, 0x1f59e21b
shl ecx, 1
mov eax, ecx
xor eax, 0x1f59e21b
and ecx, 0x60a61de4
shl ecx, 1
sub eax, ecx
add al, dl
add al, 0x38
mov byte [ebx + 2], al
mov dl, byte [ebx + 3]
movzx ecx, dl
and ecx, 0x1f59e21c
shl ecx, 1
mov eax, ecx
xor eax, 0x1f59e21c
and ecx, 0x60a61de3
shl ecx, 1
sub eax, ecx
add al, dl
add al, 0x38
mov byte [ebx + 3], al
mov eax, dword [esi + 0x218]
mov al, byte [eax]
mov byte [esi + 0x170], al
mov eax, dword [esi + 0xc0]
mov byte [eax], 0x82
mov byte [eax + 1], 0x13
mov byte [eax + 2], 0x7b
mov byte [eax + 3], 0x15
mov byte [eax + 4], 0x81
mov byte [eax + 5], 0x17
mov byte [eax + 6], 0x7d
mov byte [eax + 7], 0x19
mov byte [eax + 8], 0x88
mov byte [eax + 9], 0x1b
mov byte [eax + 0xa], 0x8f
mov byte [eax + 0xb], 0x1d
mov byte [eax + 0xc], 0x76
mov byte [eax + 0xd], 0x1f
mov byte [eax + 0xe], 0x65
mov byte [eax + 0xf], 1
mov byte [eax + 0x10], 0x6e
mov byte [eax + 0x11], 3
mov byte [eax + 0x12], 0x68
mov byte [eax + 0x13], 5
mov byte [eax + 0x14], 0x26
mov byte [eax + 0x15], 7
mov byte [eax + 0x16], 0x25
mov byte [eax + 0x17], 9
mov byte [eax + 0x18], 0x6f
mov byte [eax + 0x19], 0xb
mov byte [eax + 0x1a], 0x94
mov byte [eax + 0x1b], 0xd
mov byte [eax + 0x1c], 0x6b
mov byte [eax + 0x1d], 0xf
mov byte [eax + 0x1e], 0x53
mov byte [eax + 0x1f], 0x31
mov byte [eax + 0x20], 0x12
mov byte [eax + 0x21], 0x33
mov byte [eax + 0x22], 0x56
mov byte [eax + 0x23], 0x35
mov byte [eax + 0x24], 0xaf
mov byte [eax + 0x25], 0x37
mov byte [eax + 0x26], 0xa8
mov byte [eax + 0x27], 0x39
mov byte [eax + 0x28], 0x5b
mov byte [eax + 0x29], 0x3b
mov byte [eax + 0x2a], 0xaf
mov byte [eax + 0x2b], 0x3d
mov byte [eax + 0x2c], 0xad
mov byte [eax + 0x2d], 0x3f
mov byte [eax + 0x2e], 0
mov byte [eax + 0x2f], 0x21
mov byte [eax + 0x30], 0xf
mov byte [eax + 0x31], 0x23
mov byte [eax + 0x32], 0x42
mov byte [eax + 0x33], 0x25
mov byte [eax + 0x34], 6
mov byte [eax + 0x35], 0x27
mov byte [eax + 0x36], 0xa
mov byte [eax + 0x37], 0x29
mov byte [eax + 0x38], 0x2a
mov byte [eax + 0x39], 0x2b
xor eax, eax
cmp eax, 0x3a
jae 0x412d71
mov edi, dword [esi + 0xc0]
mov cl, byte [edi + eax]
mov dl, al
add dl, 2
xor dl, cl
add dl, 0xf0
mov byte [edi + eax], dl
mov edi, dword [esi + 4]
add eax, 1
jmp 0x412d4e
sub esp, 8
mov eax, dword [esi + 0x18]
mov dword [esp], eax
mov eax, dword [esi + 0xc0]
mov dword [esp + 4], eax
call fcn.00409e40
mov dword [esp], eax
mov dword [esp + 4], edi
call fcn.00409e40
mov dword [esp], eax
mov dword [esp + 4], ebx
call fcn.00409e40
add esp, 8
mov eax, 2
mov edx, dword [esi + 8]
mov dword [esi + 0x44], eax
xor eax, eax
jmp 0x412db3
cmp eax, 0
mov eax, dword [esi + 0x60]
je 0x412fd2
jmp 0x4136ac
cmp edi, 1
sete al
cmp dword [esi + 0x44], 2
sete cl
and al, cl
mov dword [esi + 0x18], 0
test al, 1
jne 0x412de8
xor edi, edi
mov edx, dword [esi + 8]
jmp 0x412fd2
mov eax, dword [esi + 0x40]
sub esp, 4
mov dword [esp], eax
call fcn.004136d0
add esp, 4
mov edi, eax
sub edi, 0xfa64c24b
add edi, 1
add edi, 0xfa64c24b
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x412e22
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408310
add esp, 4
mov edx, dword [esi + 0x40]
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x200], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], edx
mov dword [esp + 0xc], 0
call fcn.0040aac0
add esp, 0x10
mov eax, dword [esi + 0x1bc]
add eax, 0x18
sub eax, 0x38a18f65
add eax, 1
add eax, 0x38a18f65
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x412e85
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408310
add esp, 4
mov dword [esi + 0x18], eax
mov eax, dword [esi + 0x214]
mov al, byte [eax]
mov byte [esi + 0x174], al
mov eax, dword [esi + 0xbc]
mov byte [eax], 0x10
mov byte [eax + 1], 0x61
mov byte [eax + 2], 0xd
mov byte [eax + 3], 0x63
mov byte [eax + 4], 0x13
mov byte [eax + 5], 0x65
mov byte [eax + 6], 3
mov byte [eax + 7], 0x67
mov byte [eax + 8], 0x1a
mov byte [eax + 9], 0x69
mov byte [eax + 0xa], 0x19
mov byte [eax + 0xb], 0x6b
mov byte [eax + 0xc], 4
mov byte [eax + 0xd], 0x6d
mov byte [eax + 0xe], 0xb
mov byte [eax + 0xf], 0x6f
mov byte [eax + 0x10], 0x1c
mov byte [eax + 0x11], 0x71
mov byte [eax + 0x12], 0x1e
mov byte [eax + 0x13], 0x73
mov byte [eax + 0x14], 0x54
mov byte [eax + 0x15], 0x75
mov byte [eax + 0x16], 0x5b
mov byte [eax + 0x17], 0x77
mov byte [eax + 0x18], 0x1d
mov byte [eax + 0x19], 0x79
mov byte [eax + 0x1a], 2
mov byte [eax + 0x1b], 0x7b
mov byte [eax + 0x1c], 0x19
mov byte [eax + 0x1d], 0x7d
mov byte [eax + 0x1e], 0x1d
mov byte [eax + 0x1f], 0x7f
mov byte [eax + 0x20], 0xa0
mov byte [eax + 0x21], 0x81
mov byte [eax + 0x22], 0xe0
mov byte [eax + 0x23], 0x83
mov byte [eax + 0x24], 0xfd
mov byte [eax + 0x25], 0x85
mov byte [eax + 0x26], 0xf6
mov byte [eax + 0x27], 0x87
mov byte [eax + 0x28], 0xe9
mov byte [eax + 0x29], 0x89
mov byte [eax + 0x2a], 0xf9
mov byte [eax + 0x2b], 0x8b
mov byte [eax + 0x2c], 0xff
mov byte [eax + 0x2d], 0x8d
mov byte [eax + 0x2e], 0xae
mov byte [eax + 0x2f], 0x8f
mov byte [eax + 0x30], 0x90
mov byte [eax + 0x31], 0x91
xor eax, eax
cmp eax, 0x32
jae 0x412f90
mov edi, dword [esi + 0xbc]
mov cl, byte [edi + eax]
mov dl, al
add dl, 0x60
xor dl, cl
mov byte [edi + eax], dl
add eax, 1
jmp 0x412f73
sub esp, 8
mov eax, dword [esi + 0x18]
mov dword [esp], eax
mov eax, dword [esi + 0xbc]
mov dword [esp + 4], eax
call fcn.00409e40
mov dword [esp], eax
mov edi, dword [esi + 0x200]
mov dword [esp + 4], edi
call fcn.00409e40
add esp, 8
sub esp, 4
mov dword [esp], edi
call fcn.00408320
add esp, 4
mov edx, dword [esi + 8]
xor edi, edi
jmp 0x412fd2
mov ecx, dword [esi + 0x44]
test ecx, ecx
mov dword [esi + 4], edi
je 0x412ff9
jmp 0x412fde
mov eax, ecx
sub eax, 1
je 0x413192
jmp 0x412feb
sub ecx, 2
je 0x41343b
jmp 0x413661
mov al, byte [esi + 0x53]
test al, 1
jne 0x413005
jmp 0x413192
xor eax, eax
sub esp, 0xc
mov edi, dword [esi + 0x1b4]
mov dword [esp], edi
mov dword [esp + 4], 0
mov dword [esp + 8], 0x44
call fcn.004084a0
add esp, 0xc
mov dword [edi], 0x44
mov edi, dword [esi + 4]
call fcn.00413b70
mov eax, dword [0x44398c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0x755f867b
call fcn.00438950
add esp, 8
test eax, eax
setne cl
xor ecx, ecx
sub esp, 0x28
mov dword [esp], edi
mov ecx, dword [esi + 0x18]
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 ecx, dword [esi + 0x1b4]
mov dword [esp + 0x20], ecx
mov ecx, dword [esi + 0x1b0]
mov dword [esp + 0x24], ecx
call eax
cmp eax, 0
setne al
mov edx, dword [esi + 8]
test al, 1
jne 0x4130c0
jmp 0x41318d
mov eax, dword [esi + 0x1b0]
mov eax, dword [eax]
mov dword [esi + 0x1ec], eax
mov al, byte [esi + 0x120]
mov byte [esi + 0x188], al
mov byte [esi + 0x34], 0x1e
mov byte [esi + 0x35], 0x1d
mov byte [esi + 0x36], 0x1c
mov byte [esi + 0x37], 0x1b
mov al, byte [esi + 0x34]
xor al, 0xd9
add al, 0x38
mov byte [esi + 0x34], al
mov al, byte [esi + 0x35]
xor al, 0xda
add al, 0x38
mov byte [esi + 0x35], al
mov al, byte [esi + 0x36]
xor al, 0xdb
add al, 0x38
mov byte [esi + 0x36], al
mov al, byte [esi + 0x37]
xor al, 0xdc
add al, 0x38
mov byte [esi + 0x37], al
mov ecx, dword [esi + 0x34]
xor edi, edi
cmp edi, dword [0x444998]
jb 0x413121
jmp 0x413185
mov eax, dword [0x44499c]
cmp dword [eax + edi*8], 0xb430e561
sete dl
mov byte [esi + 0x4c], dl
test dl, 1
jne 0x41313a
jmp 0x413178
mov eax, dword [eax + edi*8 + 4]
cmp eax, ecx
je 0x413178
mov dword [esi + 0x1dc], ecx
mov ecx, dword [0x4449a0]
sub esp, 0x10
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 4
mov eax, dword [esi + 0x1ec]
mov dword [esp + 0xc], eax
call fcn.004371f0
mov ecx, dword [esi + 0x1dc]
add esp, 0x10
test byte [esi + 0x4c], 1
je 0x413180
jmp 0x413185
add edi, 1
jmp 0x413117
mov edx, dword [esi + 8]
mov edi, dword [esi + 4]
jmp 0x41318d
jmp 0x413661
call fcn.00413b70
mov eax, dword [0x44398c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0x4e0c8565
call fcn.00438950
add esp, 8
mov edi, eax
test edi, edi
setne al
call fcn.00413b70
call fcn.00413b70
mov eax, dword [esi + 0x40]
xor ecx, ecx
lea ecx, [0x41f8e0]
sub esp, 0x18
mov dword [esp], 0
mov dword [esp + 4], 0
mov dword [esp + 8], ecx
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0
call edi
mov dword [esi + 0x1a8], eax
cmp eax, 0
setne cl
test cl, 1
mov edx, dword [esi + 8]
mov edi, dword [esi + 4]
jne 0x413216
jmp 0x413436
mov eax, dword [esi + 0x210]
mov cl, byte [eax]
mov byte [esi + 0x178], cl
mov eax, dword [esi + 0xb8]
mov byte [eax], 0xb2
mov byte [eax + 1], 0x69
mov byte [eax + 2], 0xe8
mov byte [eax + 3], 0x49
mov byte [eax + 4], 0xa9
mov byte [eax + 5], 0xa8
mov byte [eax + 6], 0xa7
mov byte [eax + 7], 0xa6
xor ecx, ecx
cmp ecx, 8
jae 0x41328c
mov eax, dword [esi + 0xb8]
movzx ebx, byte [eax + ecx]
mov edi, 0x5bc2cc5d
sub edi, ecx
or edi, ebx
mov edx, 0x5d
sub edx, ecx
and edx, ebx
xor edi, 0xffffffff
or edx, edi
mov edi, edx
and edi, 0x11
xor edi, 0x11
and edx, 0xee
sub edx, edi
add dl, 1
mov byte [eax + ecx], dl
add ecx, 1
jmp 0x41324b
mov eax, dword [esi + 0xb8]
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov edi, dword [esi + 0x1ac]
mov dword [edi + 4], edx
mov dword [edi], ecx
mov cl, byte [esi + 0x17c]
mov byte [esi + 0x180], cl
mov byte [esi + 0x3c], 0x1e
mov byte [esi + 0x3d], 0x1d
mov byte [esi + 0x3e], 0x1c
mov byte [esi + 0x3f], 0x1b
mov cl, byte [esi + 0x3c]
xor cl, 0xd9
add cl, 0x38
mov byte [esi + 0x3c], cl
mov cl, byte [esi + 0x3d]
xor cl, 0xda
add cl, 0x38
mov byte [esi + 0x3d], cl
mov cl, byte [esi + 0x3e]
xor cl, 0xdb
add cl, 0x38
mov byte [esi + 0x3e], cl
mov cl, byte [esi + 0x3f]
xor cl, 0xdc
add cl, 0x38
mov byte [esi + 0x3f], cl
mov eax, dword [esi + 0x3c]
xor edi, edi
cmp edi, dword [0x444998]
jb 0x4132fd
jmp 0x413370
mov ecx, dword [0x44499c]
cmp dword [ecx + edi*8], 0xa67d73aa
sete dl
test dl, 1
jne 0x413314
jmp 0x413364
mov ecx, dword [ecx + edi*8 + 4]
cmp ecx, eax
je 0x413364
mov byte [esi + 0x50], dl
mov edx, dword [0x4449a0]
xor ebx, ebx
sub esp, 0x18
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], 0xc
mov ebx, eax
mov eax, dword [esi + 0x1a8]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0
mov ecx, dword [esi + 0x1ac]
mov dword [esp + 0x14], ecx
call fcn.004371f0
mov dl, byte [esi + 0x50]
add esp, 0x18
mov eax, ebx
test dl, 1
je 0x41336b
jmp 0x413370
add edi, 1
jmp 0x4132f3
mov cl, byte [esi + 0x11c]
mov byte [esi + 0x18c], cl
mov byte [esi + 0x30], 0x1e
mov byte [esi + 0x31], 0x1d
mov byte [esi + 0x32], 0x1c
mov byte [esi + 0x33], 0x1b
mov cl, byte [esi + 0x30]
xor cl, 0xd9
add cl, 0x38
mov byte [esi + 0x30], cl
mov cl, byte [esi + 0x31]
xor cl, 0xda
add cl, 0x38
mov byte [esi + 0x31], cl
mov cl, byte [esi + 0x32]
xor cl, 0xdb
add cl, 0x38
mov byte [esi + 0x32], cl
mov cl, byte [esi + 0x33]
xor cl, 0xdc
add cl, 0x38
mov byte [esi + 0x33], cl
mov eax, dword [esi + 0x30]
xor edi, edi
cmp edi, dword [0x444998]
jb 0x4133cb
jmp 0x413430
mov ecx, dword [0x44499c]
cmp dword [ecx + edi*8], 0xb430e561
sete dl
test dl, 1
jne 0x4133e2
jmp 0x413424
mov ecx, dword [ecx + edi*8 + 4]
cmp ecx, eax
je 0x413424
mov bl, dl
mov edx, dword [0x4449a0]
sub esp, 0x10
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], 4
mov dword [esi + 0x1c8], eax
mov eax, dword [esi + 0x1a8]
mov dword [esp + 0xc], eax
call fcn.004371f0
mov dl, bl
add esp, 0x10
mov eax, dword [esi + 0x1c8]
test dl, 1
je 0x41342b
jmp 0x413430
add edi, 1
jmp 0x4133c1
mov edx, dword [esi + 8]
mov edi, dword [esi + 4]
jmp 0x413661
xor eax, eax
mov ecx, 0x11
mov edx, dword [esi + 0x20c]
mov edi, edx
rep stosd dword es:[edi], eax
mov dword [edx], 0x44
mov edi, edx
mov eax, dword [0x44398c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0x755f867b
call fcn.00438950
add esp, 8
test eax, eax
setne cl
xor ecx, ecx
sub esp, 0x28
mov dword [esp], 0
mov ecx, dword [esi + 0x18]
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 + 0xb4]
mov dword [esp + 0x24], ecx
call eax
cmp eax, 0
je 0x41365b
mov eax, dword [esi + 0xb4]
mov eax, dword [eax + 4]
mov dword [esi + 0x1f4], eax
mov al, byte [esi + 0x118]
mov byte [esi + 0x190], al
mov byte [esi + 0x2c], 0x1e
mov byte [esi + 0x2d], 0x1d
mov byte [esi + 0x2e], 0x1c
mov byte [esi + 0x2f], 0x1b
mov al, byte [esi + 0x2c]
xor al, 0xd9
add al, 0x38
mov byte [esi + 0x2c], al
mov al, byte [esi + 0x2d]
xor al, 0xda
add al, 0x38
mov byte [esi + 0x2d], al
mov al, byte [esi + 0x2e]
xor al, 0xdb
add al, 0x38
mov byte [esi + 0x2e], al
mov al, byte [esi + 0x2f]
xor al, 0xdc
add al, 0x38
mov byte [esi + 0x2f], al
mov ecx, dword [esi + 0x2c]
xor edi, edi
cmp edi, dword [0x444998]
jb 0x413532
jmp 0x413596
mov eax, dword [0x44499c]
cmp dword [eax + edi*8], 0xb430e561
sete dl
mov byte [esi + 0x4e], dl
test dl, 1
jne 0x41354b
jmp 0x413589
mov eax, dword [eax + edi*8 + 4]
cmp eax, ecx
je 0x413589
mov dword [esi + 0x1e4], ecx
mov ecx, dword [0x4449a0]
sub esp, 0x10
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 4
mov eax, dword [esi + 0x1f4]
mov dword [esp + 0xc], eax
call fcn.004371f0
mov ecx, dword [esi + 0x1e4]
add esp, 0x10
test byte [esi + 0x4e], 1
je 0x413591
jmp 0x413596
add edi, 1
jmp 0x413528
mov eax, dword [esi + 0xb4]
mov eax, dword [eax]
mov dword [esi + 0x1f0], eax
mov al, byte [esi + 0x114]
mov byte [esi + 0x194], al
mov byte [esi + 0x28], 0x1e
mov byte [esi + 0x29], 0x1d
mov byte [esi + 0x2a], 0x1c
mov byte [esi + 0x2b], 0x1b
mov al, byte [esi + 0x28]
xor al, 0xd9
add al, 0x38
mov byte [esi + 0x28], al
mov al, byte [esi + 0x29]
xor al, 0xda
add al, 0x38
mov byte [esi + 0x29], al
mov al, byte [esi + 0x2a]
xor al, 0xdb
add al, 0x38
mov byte [esi + 0x2a], al
mov al, byte [esi + 0x2b]
xor al, 0xdc
add al, 0x38
mov byte [esi + 0x2b], al
mov ecx, dword [esi + 0x28]
xor edi, edi
cmp edi, dword [0x444998]
jb 0x4135f7
jmp 0x41365b
mov eax, dword [0x44499c]
cmp dword [eax + edi*8], 0xb430e561
sete dl
mov byte [esi + 0x4d], dl
test dl, 1
jne 0x413610
jmp 0x41364e
mov eax, dword [eax + edi*8 + 4]
cmp eax, ecx
je 0x41364e
mov dword [esi + 0x1e0], ecx
mov ecx, dword [0x4449a0]
sub esp, 0x10
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 4
mov eax, dword [esi + 0x1f0]
mov dword [esp + 0xc], eax
call fcn.004371f0
mov ecx, dword [esi + 0x1e0]
add esp, 0x10
test byte [esi + 0x4d], 1
je 0x413656
jmp 0x41365b
add edi, 1
jmp 0x4135ed
mov edx, dword [esi + 8]
mov edi, dword [esi + 4]
mov ebx, edx
mov eax, dword [esi + 0x40]
sub esp, 4
mov dword [esp], eax
call fcn.00435e20
add esp, 4
cmp edi, 0
je 0x413687
sub esp, 4
mov dword [esp], edi
call fcn.00408320
add esp, 4
cmp dword [esi + 0x18], 0
sete al
test al, 1
jne 0x4136a5
jmp 0x413694
sub esp, 4
mov eax, dword [esi + 0x18]
mov dword [esp], eax
call fcn.00408320
add esp, 4
mov eax, dword [esi + 0x60]
mov edx, ebx
jmp 0x4136ac
add eax, 1
mov ebx, eax
jmp 0x411913
and al, 1
movzx eax, al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret